Frage

Im Grunde habe ich ein Lesezeichen erstellt und möchte, dass es ausgeführt wird, wenn eine bestimmte URL mit Platzhalter geöffnet wird.Aus bestimmten Gründen läuft es nicht einfach als Javascript in einer Chrome-Erweiterung, und ich bin es leid, es zu versuchen.

Was Ich finde könnte funktionieren, ist eine Erweiterung zu erstellen, die a hat content_script für die angegebene(n) Seite(n) (was einen Platzhalter über erlaubt). match), Und Bringen Sie es irgendwie dazu, dasselbe zu tun, was auch geschehen würde, wenn der Benutzer auf das Bookmarklet in der Lesezeichenleiste klickt.

Allerdings weiß ich nicht, wie ich das machen soll.

Eine Sache ist zu beachten Ich benötige es, um auf den globalen Bereich der Seite zuzugreifen, d. h. aus der Erweiterungs-Sandbox ausbrechen (was möglich ist, und wurde bestätigt im Chromium-Bug-Tracker per Design möglich sein).

Die Frage ist also wieder: wie, von einem content_script, soll ich „das Bookmarklet laden“ (mit anderen Worten, So konvertieren Sie ein Bookmarklet in eine Google Chrome-Erweiterung).Ich habe es auch in einfachem Javascript, falls das von Nutzen sein könnte.

Das ist das Bookmarklet, falls jemand damit testen möchte.Es ist zur Verwendung bei gedacht my.deviantart.com/messages/* (Sie benötigen jedoch ein Konto und Nachrichten in Ihrem Posteingang, um den Effekt zu sehen. Bewegen Sie den Mauszeiger über einen Link zu einer „Abweichung“ und es wird ein Tooltip mit einer Miniaturansicht davon angezeigt.)

(Bearbeiten: Hier ist ein Verlängerungsversuch, gepostet in den Kommentaren einer Antwort)

War es hilfreich?

Lösung

Sie können Cross-Domain-Anrufe aus einem Content-Skript erstellen, wenn Sie eine URL in die Berechtigungen geben, Teil Ihres Manifests ...
http://code.google.com/chrome/extensions/xhr.html

was es schütteln schien, war der Rückruf, den Sie in die Anforderungs-URL einfügen, und das ist nicht erforderlich, also habe ich es herausgenommen.
Hier ist eine funktionierende Version Ihres Codes ....
manifest generasacodicetagpre.

contentscript generasacodicetagpre.

Der einzige Fehler, den ich nach den Änderungen bemerkt habe, versucht es, eine URL zu erhalten, die 404 erhält ...
http://backend.deviantArt .com / OEMBED? URL= http% 3A% 2F% 2FNEWS.DeviantArt.com% 2farticle% 2F143885% 2F
... ein kleiner Fehler, ich lasse es Ihnen bis zu Ihnen, um dieses eine loszuwerden;).
Oh, und ich nahm das Timer-Sachen heraus, ist das wirklich braucht? Wenn Sie auf eine andere URL gehen, werden Sie auf eine Galerie klicken?

Andere Tipps

Ich denke, was Sie suchen, ist Message Passing:

http://code.google.com/chrome/extensions/messaging.html

Damit können Sie Ereignisse von Ihrem content_script an Ihr Hintergrundskript übergeben.Auf der Hintergrundseite stehen Ihnen alle Funktionen der Chrome-Erweiterung zur Verfügung.

Die Konvertierung von einem Bookmarklet in eine Chrome-Erweiterung erfordert fast keinen Arbeitsaufwand (vorausgesetzt, das Bookmarklet greift nur auf DOM-Elemente zu – ein Kriterium, das Ihre Erweiterung anscheinend erfüllt).Fügen Sie einfach das JavaScript in Ihre Erweiterung ein content_script.js.

Beachten Sie jedoch, dass Ihr Bookmarklet jQuery verwendet.Sie müssen dies auch in Ihr Inhaltsskript einbetten. Siehe hier wie man das macht.

Noch eine Anmerkung.Sie müssen keinen Fehler ausnutzen, um aus der Erweiterung auszubrechen.Chrome-Erweiterungen haben konstruktionsbedingt Zugriff auf DOM-Elemente der Seite, aber nichts anderes innerhalb des JavaScript-Namespace.Mit anderen Worten, wenn die Seite einige supergeheime Variablen geladen hat var bob = 'My secret!!!1', Ihre Nebenstelle konnte nicht zugreifen bob und lesen Sie seinen Wert.Andererseits, wenn bobDer Wert wurde in a geladen span Tag, Ihre Erweiterung könnte dieses Tag finden und lesen, da es Teil des DOM ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top