2012-06-07 11 views

risposta

27

La risposta reale è che non è necessario utilizzare "funzioni private auto-gestite". È necessario comprendere che gli script di contenuto sono executed in isolation, quindi non possono essere in conflitto con le risorse utilizzate dai siti Web in base alla progettazione.

Se si desidera utilizzare una libreria nel proprio script di contenuto, il metodo preferito è semplicemente includerlo nella propria estensione/app e quindi caricarlo prima nel file manifest;

{ 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ] 
    ... 
} 

Questo si tradurrà in jquery.js essere caricati al tuo ambiente di script contenuti privati ​​e poi MyScript.js. Il codice sarà molto più pulito e modulare in quanto non contiene codice minuscolo per librerie esterne.

Fonte:https://developer.chrome.com/extensions/content_scripts

+1

Questo non è un problema a causa del modo in cui gli script di contenuto modificano l'ambiente JavaScript. La sezione [ambiente di esecuzione] (http://code.google.com/chrome/extensions/content_scripts.html#execution-environment) della documentazione ufficiale copre abbastanza bene questo aspetto. – Alasdair

+0

Vedo che il documento copre esattamente il caso di jquery: "Ad esempio, uno script di contenuto potrebbe includere JQuery v1 e la pagina potrebbe includere JQuery v2 e non sarebbero in conflitto l'uno con l'altro." –

+0

jQuery stesso è solo una libreria e non apporta alcuna modifica a cui non viene detto. Come la maggior parte delle librerie, le librerie comuni espongono solo le sue funzionalità attraverso l'uso di una o più variabili globali. Se stai usando una libreria che cambia il DOM senza alcuna istruzione, probabilmente ne sarai consapevole poiché quel comportamento presumibilmente va di pari passo con la sua funzionalità. – Alasdair

Problemi correlati