Comment faire en sorte que greasemonkey appelle une fonction sur une page après son chargement

StackOverflow https://stackoverflow.com/questions/443430

  •  22-07-2019
  •  | 
  •  

Question

J'ai un script très simple, greasemonkey, que je souhaite appeler une fonction javascript déjà existante sur la page. J'ai lu la documentation et rien ne semble fonctionner

window.setTimeout(function() { 
    alert('test') // This alert works, but nothing after it does
    myFunction() // undefined
    window.myFunction() // undefined
    document.myFunction() // undefined
}, 1000);
Était-ce utile?

La solution

Essayez d’utiliser: unsafeWindow.myFunction ();

Plus de détails et d'informations - http://wiki.greasespot.net/UnsafeWindow

Autres conseils

Une façon d'appeler une fonction dans la page d'origine est la suivante:

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

C'est un peu moche. Il existe également le unsafeWindow fourni par GreaseMonkey également, mais les auteurs déconseillent de l'utiliser.

unsafeWindow.myFunction();

Cela semble plus net, mais assurez-vous de bien comprendre les ramifications. À partir du manuel:

  

unsafeWindow contourne Greasemonkey   Modèle de sécurité basé sur XPCNativeWrapper,   qui existe pour s'assurer que   les pages Web malveillantes ne peuvent pas altérer   objets de manière à faire   scripts greasemonkey (qui exécutent   avec plus de privilèges que d'ordinaire   Javascript en cours d'exécution dans une page Web)   des choses que leurs auteurs ou utilisateurs ont faites   pas l'intention. Les scripts utilisateur devraient   évitez donc d'appeler ou en tout   autre moyen en fonction des propriétés   unsafeWindow - surtout si   sont exécutés pour des pages Web arbitraires,   comme ceux avec @include *, où   les auteurs de la page peuvent avoir subverti   l'environnement de cette manière.

En d'autres termes, votre script élève les privilèges disponibles pour le script de page d'origine si vous utilisez unsafeWindow.

Vous pouvez essayer d’utiliser des écouteurs d’événement javascript.

Ceux-ci exécutent du code lors de la réponse à des événements d'objet se produisant (tels que le chargement de page)

Par exemple, pour exécuter du code au chargement de la page:

window.addEventListener('load', function () 
{
    /* code goes here */
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top