[英]Injecting JQuery Cross-Domain
使用JsonP注入JQuery腳本是否安全?
我的網絡應用程序的安裝是-將腳本添加到客戶的網站(例如Google Analytics(分析))。 我當時想在客戶的網站上使用JQuery,作為我自己注入的腳本的一部分。
我想知道是否存在某種風險? 該應用程序需要支持任何類型的網站。
謝謝亞倫
很難說出您對庫的處理方式,但是似乎您正在構建某種類型的小部件以在多個站點上使用。
@K Prime的啟發性評論使我進行了精確的研究,以便在需要時包括兩個jQuery副本,從這里開始進行更新:
它通常是壞的使用jQuery,如果你正在建設一個小工具,將生活在你的控制之外的網站,將被添加到該網站有“復制此嵌入代碼並粘貼到您的網站”類型的功能。 (當然,jQuery小部件和插件比比皆是,但是通常由開發人員選擇和安裝/實現,而不是由通用的“ copy-n-paste”小部件類型實現)
可能的最大原因(意識到您可以在同一頁面上運行jQuery的兩個副本之后)是文件大小增加。 是否保證將取決於您的特定需求和功能。 簡單的小部件=直JS。 復雜的網站前端擴展,那么可能值得增加文件大小。
要正確地包含它(這樣您就不會在他們的網站上發生沖突)請遵循以下工作流程:
var mywidget_jQuery = $.noConflict( true );
這將恢復$
的原始含義並恢復window.jQuery
的原始含義。 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.