Lesezeichen

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

A Lesezeichen ist ein Lesezeichen gespeichert in a Webbrowser Das enthält JavaScript -Befehle, die dem Browser neue Funktionen hinzufügen. Sie werden als die gespeichert URL eines Lesezeichens in a Webbrowser oder als a Hyperlink auf einen Website. Lesezeichen sind normalerweise kleine Ausschnitte von JavaScript ausgeführt, wenn der Benutzer darauf klickt. Wenn Sie angeklickt werden, können Lesezeichen eine Vielzahl von Vorgängen ausführen, z. B. eine Suchabfrage aus ausgewählten Text oder das Extrahieren von Daten aus einer Tabelle.

Ein anderer Name für Lesezeichen ist favelet oder Favorit, abgeleitet von Favoriten (Synonym für Lesezeichen).[1]

Geschichte

Steve Kangas von bookmarklets.com hat das Wort geprägt Lesezeichen[2] Als er anfing, kurze Skripte zu erstellen, die auf einem Vorschlag in basierten Netscape's JavaScript -Handbuch.[3] Davor, Tantek Çelik genannt diese Skripte Favelets und benutzte dieses Wort bereits am 6. September 2001 (persönliche E -Mail[Klarstellung erforderlich]). Brendan Eich, der JavaScript bei Netscape entwickelte, gab diesen Bericht über den Ursprung von Lesezeichen:

Sie waren in diesem Sinne ein absichtliches Merkmal: Ich habe das erfunden JavaScript: URL zusammen mit JavaScript im Jahr 1995 und beabsichtigte das JavaScript: URLs können als jede andere Art von URL verwendet werden, einschließlich des Lesezeichens. Insbesondere habe ich es ermöglicht, ein neues Dokument durch Laden zu generieren, z. JavaScript: 'Hallo, Welt', aber auch (Schlüssel für Lesezeichen), um ein willkürliches Skript gegen die auszuführen Dom des aktuellen Dokuments, z. JavaScript: alert (document.links [0] .href). Der Unterschied besteht darin, dass die letztere Art von URL einen Ausdruck verwendet, der den undefinierten Typ in JS bewertet. Ich habe den Hohlraumbetreiber JS vor Netscape 2 hinzugefügt, um den nicht-definierten Wert in a leicht zu verwerfen JavaScript: URL.

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

Die erhöhte Umsetzung von Inhaltssicherheitsrichtlinie (CSP) auf Websites hat Probleme bei der Ausführung und Nutzung von Lesezeichen (2013-2015) verursacht.[5] Mit einigen schlägt dies vor, dass dies das Ende oder den Tod von Lesezeichen liegt.[6][7] William Donnelly erstellte Anfang 2015 eine Arbeit für dieses Problem (in der spezifischen Instanz des Ladens, Verweisens und Verwendens von JavaScript-Bibliothekscode) mit einer Fettaffe UserScript (Feuerfuchs / Blasser Mond Browser-Add-On-Erweiterung) und ein einfaches Lesezeichen-UserScript Kommunikationsprotokoll.[8] Auf allen Websites, einschließlich derjenigen, die CSP verwenden und ein HTTPS: // URI-Schema haben, können (bibliotheksbasierte) Lesezeichen ausgeführt werden. Beachten Sie jedoch, dass wenn/wenn Browser die Ausführung von Inline -Skript in der Inline -Skript mithilfe von CSP deaktivieren/nicht zulässt. Wenn Websites diese Funktion implementieren, wird diese "Fix" unterbrochen.

Konzept

Webbrowser verwenden URIS für die href Attribut der Tag und für Lesezeichen. Das URI -Schema, wie z. http:, Datei:, oder FTP:an Protokoll und das Format für den Rest der Zeichenfolge. Browser implementieren auch ein Präfix JavaScript: Das für einen Parser ist genau wie jeder andere URI. Innen sieht der Browser, dass das angegebene Protokoll ist JavaScriptbehandelt den Rest der Zeichenfolge als JavaScript -Anwendung, die dann ausgeführt wird, und verwendet die resultierende Zeichenfolge als neue Seite.

Das ausführende Skript hat Zugriff auf die aktuelle Seite, die es inspizieren und sich ändern kann. Wenn das Skript einen undefinierten Typ zurückgibt (und nicht beispielsweise eine Zeichenfolge), lädt der Browser keine neue Seite, wobei das Ergebnis einfach auf dem aktuellen Seiteninhalt ausgeführt wird. Dies ermöglicht Änderungen wie eine Schriftgröße und Farbänderungen ohne Seite ohne Seite.

Ein Anonyme Funktion Das gibt keinen Wert zurück, definiert eine Funktion usw. kann verwendet werden, um das Skript zu zwingen, einen undefinierten Typ zurückzugeben:

JavaScript:(Funktion(s) {   // Aussagen, die einen nicht-definierten Typ zurückgeben, z. Zuordnungen }) (); 

Wenn ein Skript jedoch eine Funktionsdefinition/Neudefinition enthält, wie z. function Use_this_globally(){...}Die Umgebung wird nicht damit bevölkert. Aus diesem Grund ein {arbitrary script} sollte eingepackt werden void(...);.

JavaScript:Leere({{willkürlich Skript}); 

Verwendungszweck

Lesezeichen werden gespeichert und als normale Lesezeichen verwendet. Als solche sind sie einfache "Ein-Klick" -Tools, die dem Browser Funktionen verleihen. Zum Beispiel können sie:

  • Ändern Sie das Erscheinungsbild einer Webseite im Browser (z.B., ändern Sie Schriftgröße, Hintergrundfarbe usw.)
  • Daten aus einer Webseite extrahieren (z.B., Hyperlinks, Bilder, Text, etc.)
  • Entfernen Sie Ausleitungen aus (z. B. Google) Suchergebnissen, um die tatsächliche Ziel -URL anzuzeigen[9]
  • Senden Sie die aktuelle Seite zu einem Blogging -Service wie z. B. Posterous, Link-Shorting-Service wie z. bit.lyoder ein Lesezeichendienst wie z. Köstlich
  • Abfrage a Suchmaschine oder Online -Enzyklopädie mit hervorgehobenem Text oder durch a Dialogbox
  • Senden Sie die aktuelle Seite an a Verbindungsvalidierung Service oder Übersetzung Service
  • Stellen Sie häufig ausgewählte Konfigurationsoptionen fest, wenn die Seite selbst keine Möglichkeit bietet, dies zu tun
  • Kontrolle HTML5 Audio und Video Wiedergabe Parameter wie Geschwindigkeit, Position, Umschalten Schleifenund zeigen/verstecken Wiedergabesteuerelemente, von denen die erste über die typische Reichweite der HTML5 -Spieler hinaus angepasst werden kann.[10][11][12]

Installation

"Installation" eines Lesezeichens wird durch das Erstellen eines neuen Lesezeichens und das Einfügen des Code in das Feld URL -Ziel durchgeführt. Wenn das Lesezeichen als Link präsentiert wird, kann es unter einigen Browsern gezogen und in die Lesezeichenleiste fallen gelassen werden. Das Lesezeichen kann dann ausgeführt werden, indem das Lesezeichen normal geladen wird.

Beispiel

Dieses Beispiel -Lesezeichen führt eine Wikipedia -Suche in jedem hervorgehobenen Text im Webbrowserfenster durch. Bei normaler Verwendung wird der folgende JavaScript -Code in einem Lesezeichen in einem Browser installiert[13] Lesezeichen-Symbolleiste. Nachdem Sie einen Text ausgewählt haben, führt das Klicken auf das Lesezeichen durch die Suche durch.

JavaScript:(Funktion(dokumentieren) { Funktion se(d) {   Rückkehr d.Auswahl ? d.Auswahl.Createrange(1).Text : d.GetSelection(1) }  d = se(dokumentieren);  zum (i=0; i<Rahmen.Länge && (d==dokumentieren || d=='dokumentieren'); i++) d = se(Rahmen[i].dokumentieren);  wenn (s || d=='dokumentieren') d = prompt("Geben Sie%20Search%20terms%20for%20Wikipedia" ein,'' ');  offen('https://en.wikipedia.org' + (s ? '/w/index.php?title=special:Search&search=' + Enkoduskomponent(s) : '' ')).Fokus(); }) (); 

Verweise

  1. ^ Jonathan Avila (2014-03-02). "So erstellen Sie ein Favlet für Barrierefreiheitstests".
  2. ^ Domain bookmarklets.com Archiviert 2009-07-07 bei der Wayback -Maschine Registriert 9. April 1998
  3. ^ "Aktivieren von JavaScript -Befehlen aus der persönlichen Symbolleiste". Was ist neu in JavaScript 1.2.Netscape Communications Corporation.1997. archiviert von das Original Am 2002-06-11.
  4. ^ Willison, Simon (10. April 2004). "E -Mail von Brendan Eich". SitePoint. Abgerufen 26. September, 2014.
  5. ^ "Bug 866522 - von CSP betroffene Lesezeichen".
  6. ^ "Lesezeichen sind tot". 23. Oktober 2014.
  7. ^ "Der langsame Tod von Lesezeichen". 16. November 2012.
  8. ^ "Die Auferstehung von Lesezeichen".
  9. ^ Ruderman, Jesse. "Lesezeichen zum Zappeln von Ärger". Jesse's Lesezeichen. Abgerufen 29. März 2013.
  10. ^ "YouTube Video Speed Lesezeichen". Sgeos.github.io.2017-10-29.
  11. ^ Kant, Kushal (23. August 2017). "So verwenden Sie Parameter in HTML5 -Video -Tags/Attributen". Findnerd.
  12. ^ "HTML -Video -Tag". www.w3schools.com.
  13. ^ Getestet auf Mozilla Firefox, Oper, Safari, und Chrom.Funktioniert nicht in IE7 oder IE8.Originalquelle: Alex Boldt

Externe Links