Rolf B: Tampermonkey: Neues Tag einfügen

Beitrag lesen

Hallo mumpel,

habe gerade nun doch mal den Affen in den Fuchs gesteckt und was probiert.

Fehlermeldung: Execution of script 'Menu' failed! setting getter-only property "contextMenu"

Würde sagen: So geht's nicht. Die Eigenschaft ist schreibgeschützt. Ich wüsste jetzt nicht, wie man sie von JavaScript aus ändern sollte, es sei denn durch schweres Geschütz: Container des img suchen (das div), innerHTML dieses Containers auslesen, alle img-Elemente manipulieren dass sie das contextMenu-Attribut bekommen, innerHTML überschreiben. Das löst dann ein Layout-Update aus und dürfte ordentlich flackern.

Angesichts der Tatsache, dass contextMenu ohnehin auf der Abschussliste steht, wäre die Idee damit tot.

Es gibt noch das contextmenu-Event, auf das man sich registrieren kann (das ist die klassische Methode um den Klick auf die "rechte" Maustaste zu unterbinden), damit kannst Du aber keine Menüpunkte ins Browser-Kontextmenü hineinmogeln. Statt dessen kannst Du ein EIGENES Menü hochbringen, d.h. ein DIV in den Body kleben und darin ein paar Buttons unterbringen. Von <menu> würde ich hier abraten, weil caniuse.com sagt, dass <menu> nur von Firefox und nur für type="context" unterstützt würde.

Du willst ja sicherlich nicht vorhandene Fuchsfeatures überschreiben, sondern ergänzen. D.h. Du könntest es BEISPIELSWEISE so machen, dass Du auf das contextmenu-Event reagierst und darin prüfst, ob die Maus zusammen mit der Alt-Taste geklickt wurde. Wenn ja, bringst Du deine eigene Funktionalität, wenn nein, tust Du nichts - woraufhin das Browser-Kontextmenü erscheint.

Dein Tampermonkey-Script muss also über die Nodelist laufen, die aus querySelectorAll zurückkommt und für jeden Eintrag einen contextmenu Eventlistener hinzufügen (mit addEventListener). In der Handler-Funktion greift man auf das target-Attribut des Event-Objekts zu, das ist das img, und findet dort den src. Den kann man dann weiterverarbeiten. Wie man den Wert ins Clipboard bekommt, weißt Du hoffentlich - ich nicht (müsste es erstmal nachgucken).

Ich habe das gerade mal im Tampermonkey probiert - mit einem alert für den src statt einem Copy ins Clipboard - klappt ganz gut. Aber ich bin ja kein Vorkauer und will Dir dein Erfolgserlebnis beim Selbermachen nicht nehmen. Viel Spaß 😀

Rolf

--
sumpsi - posui - clusi