2011-08-27 19 views
8

我在寫一個Chrome擴展程序,它可以擺弄頁面的佈局。我想用最新版本的jQuery來做到這一點。當舊版本已經在頁面上時,如何在Chrome擴展內容腳本中使用jquery

有問題的頁面已經包含jQuery 1.4.4版本作爲其腳本的一部分。

如果我包含更新版本的jQuery,頁面會掛起。我如何包含最新版本的jQuery,以便它僅對我的內容腳本可用,並且不會影響頁面上已有的腳本?

回答

6

如果你注入你的jQuery作爲內容腳本,它將是sandboxed,不管父母頁面使用什麼,你都不會有任何衝突。

+0

_「例如,內容腳本可能包含JQuery v1,頁面可能包含JQuery v2,它們不會相互衝突。「_ – Eric

1

通過使用它的No Conflict mode並在閉包中執行您的代碼,您可以基本命名空間不同的jQuery版本。例如:

<script src="jquery-1.6.2.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    jq162 = jQuery.noConflict(true); 
    (function ($) { 
     $(function() { 
      // Your document ready code here 
     }); 
    })(jq162); 
</script> 

請注意,這個聲明使得jq162提供給全球範圍內,因此可以重複使用在其他地方。如果你希望本地範圍jQuery的實例,請將其設爲var

+0

noConflict仍留下'jQuery'變量,不是嗎? – Eric

+0

通過將參數'true'傳遞給'noConflict()',它恢復了'$'和'jQuery'變量的原始範圍,以我對文檔的理解。 – lsuarez

+0

也就是說,如果我不清楚,在使用上述呼叫時,對您的問題的回答是「否」。 xD(需要咖啡因...) – lsuarez

相關問題