28 Stimmen

Wie kann ich Greasemonkey dazu bringen, eine Funktion auf einer Seite aufzurufen, nachdem sie geladen wurde?

Ich habe ein sehr einfaches Greasemonkey-Skript, das eine bereits vorhandene JavaScript-Funktion auf der Seite aufrufen möchte. Ich habe die Dokumentation gelesen und nichts scheint zu funktionieren

window.setTimeout(function() { 
    alert('test') // Diese Warnmeldung funktioniert, aber nichts danach
    myFunction() // undefiniert
    window.myFunction() // undefiniert
    document.myFunction() // undefiniert
}, 1000);

27voto

Maiku Mori Punkte 7284

Versuchen Sie es mit: unsafeWindow.myFunction();

Weitere Details und Informationen - http://wiki.greasespot.net/UnsafeWindow

17voto

Paul Dixon Punkte 286600

Ein Weg, eine Funktion auf der Ursprungsseite aufzurufen, ist folgendermaßen:

location.href = "javascript:void(myFunction());";

Es ist ein wenig hässlich. Es gibt auch das unsafeWindow bereitgestellt von GreaseMonkey, aber die Autoren raten davon ab, es zu verwenden.

unsafeWindow.myFunction();

Sieht ordentlicher aus, aber stellen Sie sicher, dass Sie die Auswirkungen verstehen. Aus dem Handbuch:

unsafeWindow umgeht das XPCNativeWrapper-basierte Sicherheitsmodell von Greasemonkey, das sicherstellen soll, dass bösartige Webseiten Objekte nicht so verändern können, dass Greasemonkey-Skripte (die mit mehr Privilegien als gewöhnliches Javascript in einer Webseite ausgeführt werden) Dinge tun können, die die Autoren oder Benutzer nicht beabsichtigt haben. Benutzerskripte sollten daher das Aufrufen oder in irgendeiner anderen Weise abhängen von Eigenschaften auf unsafeWindow vermeiden - insbesondere wenn sie für beliebige Webseiten ausgeführt werden, wie solche mit @include *, bei denen die Seitenautoren die Umgebung auf diese Weise untergraben haben könnten.

Mit anderen Worten, Ihr Skript erhöht die verfügbaren Privilegien für das ursprüngliche Seitenskript, wenn Sie unsafeWindow verwenden.

7voto

Sophia Punkte 5443

Sie könnten versuchen, JavaScript-Ereignislistener zu verwenden.

Diese führen Code aus, wenn auf Objektereignisse reagiert wird (zum Beispiel beim Laden der Seite).

Zum Beispiel, um Code beim Laden der Seite auszuführen:

window.addEventListener('load', function () 
{
    /* Code hier einfügen */
});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X