Tipp: Bookmarklets - schnell wichtige Links aufrufen

Ich bin hier sicher nicht der einzige, dem das häufige Tippen von “overpass-api.de/achavi/?changeset=” oder “osm.org/user” zu lästig ist, um schnell einen bestimmten Changeset zu überprüfen oder User zu finden.

In meinem Browser habe ich inzwischen eine ganze Sammlung kleiner Bookmarklets, die mir eine Menge Arbeit sparen: Ich markiere einen Text im Browserfenster (z.B. jemand erwähnt einen Key wie “destination” in einem Forumsbeitrag) und klicke auf das gespeicherte Bookmarklet und lande direkt bei Taginfo. Oder ich finde eine Changeset-ID (so wie die runde 10000000) und lande direkt bei Achavi.

Hier das Beispiel für Taginfo:

javascript:x=escape(getSelection());if(!x)x=escape(document.activeElement.value.substring(document.activeElement.selectionStart,document.activeElement.selectionEnd));if(x)void(open('https://taginfo.openstreetmap.org/keys/'+x))

Den Link ganz am Ende kann man beliebig an seine Erfordernisse anpassen, der Rest davor ist nur dafür da, den markierten Text auf der gerade offenen Webseite zu finden. Die Zwischenablage kann man hier nicht benutzen, das ist aus Sicherheitsgründen nur mit Hürden möglich.

Leider erlaubt das Forum nicht, diese hier direkt als Links zu posten, deswegen verweise ich euch auf meine eigene Seite:
http://blog.mueschelsoft.de/2017/11/29/bookmarklets-fuer-osm/

Vielen Dank für den Tipp. Schöne Seite übrigens. Den Lane Visualizer hab ich gleich mal bei mir installiert :slight_smile:

Gute und praktische Sache, wobei ich hier gerne noch eine von mir häufig genutzte Alternative Werbung machen möchte:

  • Ich habe ein Lesezeichen im Firefox auf http://www.openstreetmap.org/way/%s
  • Diesem Lesezeichen gebe ich das “Schlüsselwort” way
  • Nun kann ich in der Adressleiste einen aus JOSM kopierten Weg einfügen, der dann aussieht wie “way 83348037”
  • Firefox ruft damit das mit “way” getaggte Lesezeichen auf und ersetzt %s durch 83348037, so dass ich dann auf http://www.openstreetmap.org/way/83348037 geleitet werde.

Analoges gilt auch für node und relation.

Siehe auch Seite Bookmarklet und Kategorie Bookmarklet im Wiki.

Ich verwende neben Bookmarklets auch die Browser-Erweiterung OSM Smart Menu (GitHub), ist allerdings experimentell und nicht gepflegt.

Die Such-Funktion und die Bookmarklets per Markierung finde ich zwar interessant, aber vielleicht etwas umständlicher als Bookmarklets die von einer openstreetmap.org URL ausgehen wie das achavi Bookmarklet. Ist vermutlich auch Geschmackssache, aber meistens hat man einen Link zu osm.org (oder Strg-Shift-i in JOSM), oder bei welchen Anwendungsfällen ist das nicht so?

Ich habe Bookmarklets immer viel benutzt (und auch die genannte Wikiseite erstellt), aber seit ein paar Tagen funktionieren sie in meinem Firefox leider nicht mehr auf den osm.org-Seiten. Beispielsweise auf https://www.openstreetmap.de/ (.de!) kann ich das oben genannte achavi Bookmarklet aufrufen. Auf beispielsweise https://www.openstreetmap.org/changeset/22002160 passiert aber gar nichts. In der Firefox (60.0.1) Konsole finde ich “Content Security Policy: Die Einstellungen der Seite haben das Laden einer Ressource auf self blockiert (“script-src”).” Da gab es wohl kürzlich ein Update der osm.org-Seiten bezüglich der Content Security Policy. Sicherlich aus Sicherheitsgründen gut, aber leider funktionieren nun Bookmarklets nicht mehr. Tatsächlich funktioniert es, wenn ich testweise die CSP in about:config generell abschalte. https://bugzilla.mozilla.org/show_bug.cgi?id=866522 habe ich schnell überflogen - das scheint wohl ein nicht wirklich behebbares Problem (außer per zusätzlichem Addon) für Firefox zu sein.

In Chromium geht es.

Kann das jemand bestätigen oder weiß gar Abhilfe für Firefox?

Kann ich bestätigen, ist mir gestern auch aufgefallen.

Hab mal nachgeschaut, die CSP wurde wohl vor vier Tagen aktiviert:
https://github.com/openstreetmap/openstreetmap-website/search?o=desc&q=csp+OR+%22security+policy%22+OR+Content-Security-Policy&s=committer-date&type=Commits
https://github.com/openstreetmap/chef/commit/53849b50b24dcba3075e2d39d1cb9eecf7995fb2

Weiß nicht, ob man in den CSP Regeln bestimmte Bookmarklets erlauben kann, hier geht es ja nicht um das Manipulieren der Seite, sondern nur um das Auslesen der URL:


javascript:alert('url: ' + location.href);

(Um das Verhalten zu sehen, kann man auch obiges Beispiel in der Adresszeile auführen, das “javascript:” wird allerdings entfernt und muss von Hand eingetragen werden)

Eine Alternative wären evtl. Greasemonkey Scripte oder Browser Extensions (Add-ons).

Die erwähnte Browser Erweiterung OSM Smart Menu (GitHub) funktioniert noch, kennt halt noch keine Changeset Links.

edit: Smart Menu kann auch Changesets

@ikonor danke für die github-Recherche. Ich habe TomH mal angemailt. Vielleicht weiß er Abhilfe. Zumindest ist ihm dann das Problem bekannt…

Bookmarklets sind auf Firefox mit CSP praktisch tot. Ist einfach so, seit 5 Jahren.

Für Greasemonkey wird des öfteren folgendes empfohlen: http://www.donnelly-house.net/programming/js/bookmarklets/bookmarklets.php

Eine spezielle Ausnahme für Bookmarklets gibt es wohl nicht, nur ‘unsafe-inline’, dort werden javascript: URLs explizit erwähnt, die erlaubt aber auch alle anderen Ausführungsmöglichkeiten, die man eigentlich mit der CSP blockieren will:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Sources
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script

Also ja, Bookmarklets are Dead…

Das habe ich u.a. auch gefunden, verstehe aber nicht, warum das funktionieren soll. Dort wird ein script Tag in die Seite eingefügt, was die CSP ja gerade verhindern soll. Wie der Autor auch anmerkt:

Was funktionieren könnte, ist einen Button einzufügen, der eine im Greasemonkey Script definierte Funktion aufruft:
How to disable CSP in Firefox for just bookmarklets?

Die erwähnte (#5) Bookmarklets context menu Erweiterung funktioniert, gibt den Bookmarklets aber mehr Zugriffsrechte als sie normalerweise hätten.

Eine weitere Möglichkeit wäre, per Browser Erweiterung für bestimmte Seiten den CSP Header zu modifizieren (besser als in den Firefox Einstellungen für alle Seiten abzuschalten):
Defeating Chrome’s Content-Security-Policy Header via a Chrome Extension
Evtl. gibt es da auch was fertiges, hab aber nur was veraltetes gefunden: UserCSP

Aber eigentlich wäre das jetzt eine Gelegenheit, nochmal grundsätzlich über Alternativen und Lösungen für kontextbezogene Links (OSM Smart Menu, mapJumper und Co.) zu diskutieren. Beziehungsweise wie man das ganze Universum an Karten und Webanwendungen rund um OSM besser miteinander verbinden kann.

Aber das wäre dann ein neues Thema.

Muss mich korrigieren: OSM Smart Menu (GitHub) hat Links zu Map, Objekt, User und doch auch Changeset.

Zum Beispiel auf einer Changeset Seite kann man in der Toolbar den Smart Menu Button klicken und bekommt ein Menü mit Links zu “OSM History Viewer” und “Augmented OSM Change Viewer”, die die entsprechende Webanwendung für das angezeigte Changeset aufrufen.