簡體   English   中英

注入JQuery跨域

[英]Injecting JQuery Cross-Domain

使用JsonP注入JQuery腳本是否安全?

我的網絡應用程序的安裝是-將腳本添加到客戶的網站(例如Google Analytics(分析))。 我當時想在客戶的網站上使用JQuery,作為我自己注入的腳本的一部分。

我想知道是否存在某種風險? 該應用程序需要支持任何類型的網站。

謝謝亞倫

很難說出您對庫的處理方式,但是似乎您正在構建某種類型的小部件以在多個站點上使用。

@K Prime的啟發性評論使我進行了精確的研究,以便在需要時包括兩個jQuery副本,從這里開始進行更新:

通常是壞的使用jQuery,如果你正在建設一個小工具,將生活在你的控制之外的網站,將被添加到該網站有“復制此嵌入代碼並粘貼到您的網站”類型的功能。 (當然,jQuery小部件和插件比比皆是,但是通常由開發人員選擇和安裝/實現,而不是由通用的“ copy-n-paste”小部件類型實現)

可能的最大原因(意識到您可以在同一頁面上運行jQuery的兩個副本之后)是文件大小增加。 是否保證將取決於您的特定需求和功能。 簡單的小部件=直JS。 復雜的網站前端擴展,那么可能值得增加文件大小。

要正確地包含它(這樣您就不會在他們的網站上發生沖突)請遵循以下工作流程:

  1. 如此處其他答案所述,使用Google API將jQuery動態添加到其頁面中。
  2. 運行var mywidget_jQuery = $.noConflict( true ); 這將恢復$的原始含義恢復window.jQuery的原始含義。
  3. 動態添加腳本文件,但請確保將整個內容包裝在這樣的自執行匿名函數中:

JS

(function($){
    ... Your code here ...
})(mywidget_jQuery);

現在,您可以安全地在特殊功能和所有想要的jQuery功能中使用$而不會出現問題。

額外的功勞您可以將步驟1和2包裹在if語句中,該語句測試是否定義了window.jQuery ,如果測試了它,則測試jQuery.fn.version是否足夠高以運行您的代碼。 如果任何一個測試失敗,則運行步驟1和2。但是,如果通過,則只需運行var mywidget_jQuery = window.jQuery這樣您在步驟3中包含的腳本仍將運行。

您可以通過簡單地添加<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.js" />元素來將jQuery添加到網站。

但是,如果它們使用不同的$關鍵字,請確保調用jQuery.noConflict()

如果您只是在參考庫,為什么不直接鏈接到Google Code上托管的API?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM