27 Stimmen

Zu den Browser-Favoriten/Lesezeichen von JavaScript hinzufügen, aber für alle Browser (meins funktioniert nicht in Chrome)?

Kann jemand helfen, ich bin mit den folgenden für das Hinzufügen eines Lesezeichens zu IE und Firefox, aber es funktioniert nicht in Chrome und ich bekomme nicht meine Fehlermeldung sagen "nicht unterstützt" entweder.

Kennt jemand ein gutes Skript, das ALLE Browser unterstützt oder zumindest zurückkommt und mir sagt, dass es nicht unterstützt wird, ich habe Zugang zu jQuery - vielleicht gibt es eine Möglichkeit, den Browser zu erkennen

Ich benutze dies derzeit und es funktioniert für IE und Firefox, aber nicht für Chrome

if (window.sidebar) { // Mozilla Firefox
    window.sidebar.addPanel(name, url, "");
}
else if (window.external) { // IE
    window.external.AddFavorite(url, name);
}
else if (window.opera && window.print) {
    window.external.AddFavorite(url, name);
}
else {
    alert('not supported');
}

0 Stimmen

Wollen Sie damit sagen, dass Sie versuchen, den Browser des Benutzers zu zwingen, ein Lesezeichen hinzuzufügen? Während ein Firefox- oder IE-Add-on das tun könnte, was Sie vorschlagen, hätte ein normales Skript auf einer Seite ganz sicher keinen Zugriff darauf.

0 Stimmen

Eigentlich ist die IE-Methode weit verbreitet (oft auf der Schaltfläche "Zu Favoriten hinzufügen"), es öffnet sich das Hinzufügen Dialog. Das ist eine schlechte Praxis, aber sie wurde sehr populär, als Internet-Anfänger (=> mit IE) nicht wussten, dass sie es selbst tun können.

3 Stimmen

Ja, das ist eine dumme Idee (wie "Zurück"-Links auf Seiten). Aber die Kunden sehen das oft auf anderen Websites und wollen es.

0voto

Volker E. Punkte 5717

Mein Ansatz mit Hilfe von jQuery.
Getestet in IE 6-8, Fx 1-25, Opera 7-14. Degradiert anmutig in Chrome, Saf.

CSS:

.no-js .link-bookmark {
   display: none;
}

JS:

/* ... Bookmark current page ... */
var $favLink = $('.link-bookmark');

if ( window.sidebar || 'AddFavorite' in window.external || window.opera ) {
    $favLink.show();
}

// add a 'rel' attrib if Op 7+ && Fx >= 23
if ( window.opera || window.sidebar ) {
    var $favLinkAttrRel = $favLink.attr('rel');
    if ( typeof $favLinkAttrRel !== "undefined" && $favLinkAttrRel !== false ) { // don't overwrite the rel attr if already set
        $favLink.attr('rel', 'sidebar');
    }
}

$favLink.click(function( event ) {
//event.preventDefault(); // prevent the anchor tag from sending the user off to the link
var url = this.href;
var $title = $('title').text();

// IE Favorite
if ( 'AddFavorite' in window.external ) {
    event.preventDefault();
    window.external.AddFavorite(url, $title);
}
// Fx <23 Bookmark, 'addPanel' not available from v23 on any more.
else if ( 'addPanel' in window.sidebar ) {
    event.preventDefault();
    window.sidebar.addPanel($title, url, '');
}
// Op 7+ && Fx >= 23
else if ( window.opera || window.sidebar ) {
    $favLink.attr('title', $title);
    return true; // do nothing - the rel="sidebar" should do the trick
}
// for Saf, Konq etc - browsers who do not support bookmarking scripts
else {
    event.preventDefault();
    alert('Your browser doesn\'t support the bookmark functionality,'
    + 'please add this page to your bookmarks manually.');
} 
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X