RSS Feed

Javascript Bookmark

19.01.2010 by naden

Um per Javascript die aktuelle Webseite als Favorit im Browser zu speichern, gibt es die abenteuerlichsten Lösungen. Noch heute liest man auf vielen Seiten, bei Firefox bitte Strg+D drücken!

Meine Lösung, die schon seit Jahren so wunderbar funktioniert sieht wie folgt aus:

function bookmark(url, title) {
  // ist keine Url angegeben, wird der aktuelle Hostname genutzt
  var url = url || location.protocol + '//' + location.host;
  // um die aktuelle Url zu bookmarken, die vorherige Zeile
  // auskommentieren und die nächste einkommentieren.
  // var url = url || location.href;
 
  // kein Titel angeg. wird der aktuelle Hostname benutzt
  var title = title || location.host;
  // um den Titel aktuelle Url zu bookmarken, die vorherige Zeile
  // auskommentieren und die nächste einkommentieren.
  // var title = document.title;
 
  // Internet Explorer
	if(document.all) {
		window.external.AddFavorite(url, title);
	}
	// Firefox
	else if(window.sidebar) {
		window.sidebar.addPanel(title, url, '');
	}
  // false zurückliefern, fall die Funktion
  // über das "onlick"-Event des <a />-Tags
  // aufgerufen wurde
  return false;
}

Der Aufruf sieht z.B. so aus:

<a href="" onclick="javascript:return bookmark();">Bookmark</a>

oder

<a href="" onclick="javascript:return bookmark('Naden\'s Webseite', 'http://www.naden.de');">Bookmark</a>

6 Kommentare »

  1. greenspirit sagt:

    Wie lagert man diesen Javascript Code extern aus? Also ich möchte auf meiner Webpage das einbauen, aber ich möchte nicht auf jeder Seite den Code kopieren, sondern nur das allernötigste. z.B.
    aber wie gebe ich da an, wenn der javascript code extern ausgelagert ist, irgendwie muss ich das ja im href mitteilen, oder? z.B.

    Bookmark

    die externe datei lautet auf “bookmarkctrl.js” und da hab ich einfach den obenstehenden code eingefügt… ich weis nichts wies geht.

  2. naden sagt:

    Hast du genau richtig gemacht, dann noch die Datei mit einem Script-Tag einbinden und einen der Buttons aus dem Beispiel kopieren.

  3. Kevin sagt:

    Heyho,
    wollte nur melden das sich dort ein “”-Tag in den Javascript-Code eingeschlichen hat.
    ( ganz am Ende )

    Außerdem funktioniert der Code im Firefox 5.0 nicht ( mehr ).
    Wie es in älteren Firefox-Versionen aussieht weiß ich nicht da ich diese nichtmehr installiert habe.

    Wäre cool wenn es dafür einen Workaround gibt damit es auch dort funktioniert.

    MfG

  4. naden sagt:

    Danke, habs entfernt. Im Firefox 5 habe ich das noch nicht ausprobiert. Was für eine Fehlermeldung gibt er den aus?

  5. Kevin sagt:

    Bei mir ist der schließende Link-Tag immer noch vorhanden oben im Javascript-Code.
    Siehe hier :
    http://minus.com/mbELvo2

    Ein weiterer Fehler hat sich im 3. Code-Feld eingeschlichen.
    Im Namen des Lesezeichens sind 3 Anführungsstriche, wobei einer zu viel ist.

    Die Fehlermeldung ist folgende, nachdem man den Fehler mit den Anführungsstrichen beseitigt hat :
    Fehler: Invalid argument passed to window.sidebar.addPanel: Unsupported panel URL.
    Quelldatei: resource://gre/components/nsSidebar.js
    Zeile: 36

    MFG

  6. naden sagt:

    Der Fehler mit dem </a>-Tag kam dadurch zustande, weil ich im Quelltext-Kommentar einen geöffnet hatte, den WordPress oder der Syntax-Highlighter schliessen wollte. Ok nun.

    Der von dir beschriebene Fehler ist nicht Firefox 5 spezifisch, sondern wird dann ausgelöst, wenn die zu bookmarkende Url mit einem ungültigen Protokoll beginnt. Gültig sind http:// https:// … Ungültig ist z.B. file:// Ich vermute, dass du das Demo Script oder deine Variante lokal getestet hast. Wenn du dann keine eigene Url übergibst, nutz das Script den Hostnamen und das Protokoll aus der aktuellen Url. Was den Fehler auslöst. Wird das Script über eine Domain benutzt, tritt der Fehler nicht auf.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>