2010-06-07 3 views
5

So che per motivi di sicurezza questo non è facile da ottenere, tuttavia ci sarebbe un modo per farlo in quanto firebug fa ...Come codificare l'estensione firefox che esegue il codice javascript nel contesto della pagina come firebug fa

Aiutateci, vorrebbe richiamare alcuni script nel contesto della pagina per ottenere un certo effetto ...

in sostanza, vorrei ottenere due funzionalità: 1. aggiungere jQuery per qualsiasi pagina web automaticamente se non esiste già . 2. quando si apre un determinato indirizzo, chiamare un metodo di quella pagina per notificare automaticamente il server. (una funzionalità Ajax della pagina)

Ho provato a iniettare sul corpo, senza fortuna. ha cercato di ottenere l'oggetto finestra, che tuttavia non ha accesso per chiamare la funzione.

Proveremo a modificare la posizione in qualcosa di simile: javascript: alert ('test inject');

Molti.

risposta

2

OK, dopo aver letto la documentazione ufficiale e la fonte di GreaseMonkey, ottengo il seguente metodo che funziona fondamentalmente per me.

Spero che farà risparmiare un'ora di sb:

var appcontent = document.getElementById("appcontent"); // browser 
    if (appcontent) { 
     appcontent.addEventListener("DOMContentLoaded", function (evnt) { 
      var doc = evnt.originalTarget; 
      var win = doc.defaultView; 
      var unsafeWin = win.wrappedJSObject; 

      // vote.up is the function on the page's context 
      // which is take from this site as example 
      unsafeWin.vote.up(...); 
     }, true); 
    } 
} 
+1

Solo una nota che l'utilizzo di unsafeWin in questo modo è incredibilmente pericoloso. Ad esempio, è legale fare una pagina dannosa var vote = { alzarsi: function() { [[get-window-object]]. Components.classes ["@ mozilla.org/file/local ; 1 "]. CreateInstance (Components.interfaces.nsILocalFile); // la pagina web potrebbe ora avere accesso al tuo filesystem locale. }} questo non funzionerà direttamente in quanto la portata globale è diversa, ma è facile per caso consentire uno script per ottenere una maniglia per finestra (valori o argomenti ritorno esempio oggetto). –