Come posso ottenere greasemonkey per chiamare una funzione su una pagina dopo il caricamento

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

  •  22-07-2019
  •  | 
  •  

Domanda

Ho uno script greasemonkey molto semplice che voglio chiamare una funzione javascript già esistente sulla pagina. Ho letto la documentazione e nulla sembra funzionare

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

Soluzione

Prova a usare: unsafeWindow.myFunction ();

Maggiori dettagli e informazioni - http://wiki.greasespot.net/UnsafeWindow

Altri suggerimenti

Un modo per chiamare una funzione nella pagina originale è il seguente:

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

È un po 'brutto. C'è anche il unsafeWindow fornito anche da GreaseMonkey, ma gli autori sconsigliano di usarlo.

unsafeWindow.myFunction();

Sembra più pulito ma assicurati di aver compreso le ramificazioni. Dal manuale:

  

unsafeWindow ignora Greasemonkey   Modello di sicurezza basato su XPCNativeWrapper,   che esiste per assicurarsi che   le pagine Web dannose non possono essere modificate   oggetti in modo tale da creare   script greasemonkey (che vengono eseguiti   con più privilegi del normale   Javascript in esecuzione in una pagina Web)   cose che hanno fatto i loro autori o utenti   non intendo. Gli script utente dovrebbero   quindi evitare di chiamare o in qualsiasi   altrimenti in base a qualsiasi proprietà   su unsafeWindow - specialmente se se   vengono eseguiti per pagine Web arbitrarie,   come quelli con @include *, dove   gli autori della pagina potrebbero aver sovvertito   l'ambiente in questo modo.

In altre parole, lo script aumenta i privilegi disponibili per lo script della pagina originale se si utilizza unsafeWindow.

Potresti provare a usare i listener di eventi javascript.

Eseguono il codice in risposta agli eventi oggetto che si verificano (come il caricamento della pagina)

Ad esempio, per eseguire il codice al caricamento della pagina:

window.addEventListener('load', function () 
{
    /* code goes here */
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top