Frage

Ich habe einen sehr einfachen Greasemonkey-Skript, das ich eine bereits vorhandene JavaScript-Funktion auf der Seite aufgerufen werden soll. Ich habe die Dokumentation zu lesen und nichts scheint zu funktionieren

window.setTimeout(function() { 
    alert('test') // This alert works, but nothing after it does
    myFunction() // undefined
    window.myFunction() // undefined
    document.myFunction() // undefined
}, 1000);
War es hilfreich?

Lösung

Versuchen Sie es mit: unsafeWindow.myFunction ();

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

Andere Tipps

Eine Möglichkeit, eine Funktion in der ursprünglichen Seite zu nennen, ist wie folgt:

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

Es ist ein bisschen hässlich. Es gibt auch die unsafeWindow von Greasemonkey zur Verfügung gestellt auch, aber die Autoren davon abraten, es zu benutzen.

unsafeWindow.myFunction();

Sieht ordentlicheres aber stellen Sie sicher, dass die Auswirkungen zu verstehen. Aus dem Handbuch:

  

unsafeWindow umgeht Grease des   XPCNativeWrapper basiertes Sicherheitsmodell,   die existieren, um sicherzustellen, dass   bösartige Web-Seiten können nicht ändern   Objekte in einer solchen Art und Weise zu machen   Greasemonkey-Skripte (die ausführen   mit mehr Privilegien als gewöhnliche   Javascript läuft in einer Web-Seite) haben   Dinge, die ihre Autoren oder Benutzer haben   nicht die Absicht. Benutzer Skripte sollten   Aufruf oder in daher vermeiden jedem   andere Art und Weise in Abhängigkeit von irgendwelchen Eigenschaften   auf unsafeWindow - especally wenn, wenn sie   sind für beliebige Web-Seiten ausgeführt,   wie mit @include * diejenigen, in denen   die Seite Autoren haben unterminiert können   die Umwelt auf diese Weise.

Mit anderen Worten, Ihr Skript erhöht die verfügbaren Zugriffsrechte auf die Originalseite Skript, wenn Sie unsafeWindow verwenden.

Sie könnten versuchen, JavaScript-Event-Listener verwenden.

Diese Ausführen von Code auf Antwort Ereignisse zum Objekt auftritt (wie Seitenlast)

Zum Beispiel Code beim Laden der Seite ausgeführt werden:

window.addEventListener('load', function () 
{
    /* code goes here */
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top