2009-02-10 68 views
7

有沒有人注意到JQuery使用ActiveX控件?jQuery和ActiveX安全性的嚴重問題?

當用戶限制其activex安全性時,他們將獲得腳本提示彈出窗口和瀏覽器窗口頂部的黃色條。 - 此設置在Windows服務器上是默認設置。 -Internet Cafe's不支持Active X. - 公司內部工作站不支持這一點。

考慮到這一點,我沒有看到人們如何在商業應用中使用JQuery。

你在商業應用中使用JQuery嗎?這是否關心你? 你認爲我應該關注這個嗎?

回答

15

只有那個地方ActiveX在jQuery代碼提到的是它用來對XmlHttpRequests的ActiveXObject

// Create the request object; Microsoft failed to properly 
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available 
var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 

有一個開放的issue here ...好像jQuery的不回退到使用本地的XMLHttpRequest在IE7上(這可能是你正在經歷的)。

而且這可能幫助:link

6

jQuery的,這樣對AJAX提供支持大多數庫,將使用ActiveX在IE中運行時創建XMLHttpRequest對象。因爲這就是你如何在IE中獲得一個XMLHttpRequest對象。如果你禁用它,那麼你不會得到AJAX。

所以不,不要擔心。如果您不使用AJAX,那麼在禁用ActiveX的系統上不會有問題;如果你這樣做,那麼你將有問題不管庫,除非你使用變通辦法,如使用iframes提交後臺請求。

2

除了原因爲什麼 jQuery可能必須使用ActiveX(即AJAX),您還應該考慮並非所有jQuery的用法都適用於AJAX功能。

0

獨立於IE中的AJAX功能,jQuery 1.3.2中存在一個問題,即在您最初加載jQuery時導致該橫幅顯示,即使您沒有對它執行任何操作。見ticked #4017。該問題已在changeset #6268中得到解決,並將在jQuery 1.3.3發佈時解決。

0

不知道這是否適用於您的案例/問題,但我注意到,jQuery版本衝突導致此問題,幾乎默認情況下,並且如果您要管理由多個組件組成的大型站點(即門戶網站, CMS等),您可能會無意中一次使用多個jQuery版本。在我的情況下,這總是導致IE 7

0

的ActiveX安全彈出我曾與做Ajax請求商店同樣的問題,所以我改變了我的jQuery的文件,以迫使IE 9

搜索負載的XMLHttpRequest :

var isIE9 = navigator.userAgent.match(/MSIE 9.0/i) != null; 
if(isIE9) 
    var l = new XMLHttpRequest();    
else 
    var l = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 

var l = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 

代之以