A Firefox browser with a dialog reading "There are about 2502 words on this page."
Demonstration eines Bookmarklets, das die Anzahl der Wörter auf einer Seite zählt. Der verwendete Browser ist Firefox 65.0.2 unter Windows 10.

Ein Bookmarklet ist ein im Webbrowser gespeichertes Lesezeichen , das JavaScript- Befehle enthält , welche dem Browser neue Funktionen hinzufügen. Es wird als URL eines Lesezeichens im Browser oder als Hyperlink auf einer Webseite gespeichert . Bookmarklets sind in der Regel kleine JavaScript-Codeabschnitte, die beim Anklicken ausgeführt werden. Beim Anklicken können Bookmarklets eine Vielzahl von Operationen durchführen, beispielsweise eine Suchanfrage anhand des markierten Textes ausführen oder Daten aus einer Tabelle extrahieren.

Eine andere Bezeichnung für Bookmarklet ist Favelet oder Favlet , abgeleitet von Favoriten (Synonym für Lesezeichen). [ 1 ]

Geschichte

Steve Kangas von bookmarklets.com prägte den Begriff „Bookmarklet “ [ 2 ] , als er, inspiriert von einem Vorschlag im JavaScript-Leitfaden von Netscape [ 3 ] , begann, kurze Skripte zu erstellen. Zuvor hatte Tantek Çelik diese Skripte „Favelets“ genannt und diesen Begriff bereits am 6. September 2001 (persönliche E-Mail) verwendet. Brendan Eich , der bei Netscape JavaScript entwickelte, schilderte die Entstehungsgeschichte der Bookmarklets folgendermaßen:

Sie waren in diesem Sinne ein bewusstes Merkmal: Ich habe die javascript:URL zusammen mit JavaScript 1995 erfunden und beabsichtigt, dass javascript:URLs wie jede andere Art von URL verwendet werden können, einschließlich der Möglichkeit, sie als Lesezeichen zu speichern. Insbesondere habe ich es ermöglicht, ein neues Dokument durch Laden zu generieren, z. B. `<script>` , aber auch (wichtig für Bookmarklets), beliebiges Skript auf dem DOM des aktuellen Dokuments javascript:'hello, world'auszuführen , z. B. `<script> `. Der Unterschied besteht darin, dass die letztere Art von URL einen Ausdruck verwendet, der in JavaScript zu einem undefinierten Typ ausgewertet wird. Ich habe den `void`-Operator vor der Veröffentlichung von Netscape 2 zu JavaScript hinzugefügt, um es einfach zu machen, jeden nicht-undefinierten Wert in einer URL zu verwerfen.javascript:alert(document.links[0].href)javascript:

— Brendan Eich, in einer E-Mail an Simon Willison [ 4 ]

The increased implementation of Content Security Policy (CSP) in websites has caused problems with bookmarklet execution and usage (2013–2015),[5] with some suggesting that this hails the end or death of bookmarklets.[6][7] William Donnelly created a work-around solution for this problem (in the specific instance of loading, referencing and using JavaScript library code) in early 2015 using a Greasemonkey userscript (Firefox / Pale Moon browser add-on extension) and a simple bookmarklet-userscript communication protocol.[8] It allows (library-based) bookmarklets to be executed on any and all websites, including those using CSP and having an https:// URI scheme. However, if/when browsers support disabling/disallowing inline script execution using CSP, and if/when websites begin to implement that feature, it will "break" this "fix".

Concept

Web browsers use URIs for the href attribute of the <a> tag and for bookmarks. The URI scheme, such as http or ftp, and which generally specifies the protocol, determines the format of the rest of the string. Browsers also implement javascript: URIs that to a parser is just like any other URI. The browser recognizes the specified javascript scheme and treats the rest of the string as a JavaScript program which is then executed. The expression result, if any, is treated as the HTML source code for a new page displayed in place of the original.

The executing script has access to the current page, which it may inspect and change. If the script returns an undefined type (rather than, for example, a string), the browser will not load a new page, with the result that the script simply runs against the current page content. This permits changes such as in-place font size and color changes without a page reload.

An immediately invoked function that returns no value or an expression preceded by the void operator will prevent the browser from attempting to parse the result of the evaluation as a snippet of HTML markup:

javascript:(function(){//Statements returning a non-undefined type, e.g. assignments})();

Usage

Bookmarklets are saved and used as normal bookmarks. As such, they are simple "one-click" tools which add functionality to the browser. For example, they can:

  • Modify the appearance of a web page within the browser (e.g., change font size, background color, etc.)
  • Daten von einer Webseite extrahieren ( z. B. Hyperlinks , Bilder , Text usw. )
  • Entfernen Sie Weiterleitungen aus den Suchergebnissen (z. B. von Google), um die eigentliche Ziel-URL anzuzeigen [ 9 ].
  • Reichen Sie die aktuelle Seite bei einem Blog-Dienst wie Posterous , einem Link-Kürzungsdienst wie bit.ly oder einem Lesezeichen-Dienst wie Delicious ein.
  • Abfragen Sie eine Suchmaschine oder Online-Enzyklopädie mit hervorgehobenem Text oder über ein Dialogfeld.
  • Senden Sie die aktuelle Seite an einen Linkvalidierungsdienst oder Übersetzungsdienst .
  • Legen Sie häufig gewählte Konfigurationsoptionen fest, wenn die Seite selbst keine Möglichkeit dazu bietet.
  • Steuern Sie die Wiedergabeparameter von HTML5 -Audio und -Video, wie Geschwindigkeit, Position, Schleifenfunktion und Ein-/Ausblenden der Wiedergabesteuerung. Die Geschwindigkeit kann dabei über die üblichen Einstellungen von HTML5-Playern hinaus angepasst werden. [ 10 ] [ 11 ] [ 12 ]

Das Installieren eines Bookmarklets erfolgt genauso wie das Hinzufügen eines normalen Lesezeichens; der einzige Unterschied besteht darin, dass anstelle des Felds für die Ziel-URL JavaScript-Code mit einem vorangestellten Punkt steht javascript:. Nach der Erstellung können Bookmarklets durch Anklicken ausgeführt werden.

Referenzen

  1. ^ Jonathan Avila (2. März 2014). „Wie man ein Favlet für Barrierefreiheitstests erstellt“ . Archiviert vom Original am 22. Januar 2018. Abgerufen am 23. Mai 2023 .
  2. ^ „Lesezeichen-Dateien“ . Archiviert vom Original am 7. Juli 2009.registriert am 9. April 1998
  3. ^ „Aktivieren von JavaScript-Befehlen über die persönliche Symbolleiste“ . Neuerungen in JavaScript 1.2 . Netscape Communications Corporation. 1997. Archiviert vom Original am 11. Juni 2002.
  4. ^ Willison, Simon (10. April 2004). „E-Mail von Brendan Eich“ . SitePoint . Archiviert vom Original am 25. September 2014. Abgerufen am 26. September 2014 .
  5. ^ „Bug 866522 – Bookmarklets von CSP betroffen“ . Archiviert vom Original am 11. Mai 2015. Abgerufen am 9. Mai 2015 .
  6. ^ „Bookmarklets sind tot“ . 23. Oktober 2014. Archiviert vom Original am 18. Mai 2015. Abgerufen am 9. Mai 2015 .
  7. ^ „Der langsame Tod der Bookmarklets“ . 16. November 2012.
  8. ^ „Die Wiederauferstehung der Bookmarklets“ .
  9. ^ Ruderman, Jesse. „Lesezeichen-Tools zum Wegwischen von Ärgernissen“ . Jesses Bookmarklets-Website . Abgerufen am 29. März 2013 .
  10. ^ „YouTube Video Speed ​​Bookmarklets“ . sgeos.github.io . 29. Oktober 2017. Archiviert vom Original am 6. Dezember 2020. Abgerufen am 6. Dezember 2020 .
  11. ^ Kant, Kushal (23. August 2017). „How to Use Parameters in HTML5 Video Tags/Attributes“ . findnerd . Archiviert vom Original am 6. Dezember 2020. Abgerufen am 6. Dezember 2020 .
  12. ^ „HTML-Video-Tag“ . www.w3schools.com . Archiviert vom Original am 6. Dezember 2020. Abgerufen am 6. Dezember 2020 .