gpt4 book ai didi

jquery - Ajax 调用在 IE 中不起作用,除非您修改安全设置

转载 作者:行者123 更新时间:2023-12-01 02:31:16 24 4
gpt4 key购买 nike

IE 有时很糟糕。直到 IE 10,IE 才提供对 XMLHttpRequest 对象的支持。相反,您必须使用 XActiveXObject 对象来运行 AJAX 调用。 JQuery 默认启动该对象,并在三元函数中维护它(如果它存在)(本质上,如果您的浏览器是 IE,则始终如此)。

但是,您已经可以看到问题了。为了使用此 ActiveX 对象,您必须修改 IE 中的安全设置,以允许 scriplet、未签名的 ActiveX schtuff 等。

有什么方法可以绕过这些安全设置(比如安装 CAB 文件来签署该死的东西),以便最终用户不必摆弄他们的浏览器设置,并且一切都可以开箱即用?

最佳答案

像您建议的那样,在 Internet Explorer 中 jQuery 并不支持 ActiveX 而不是 XMLHttpRequest。相反,它检查它是否存在,然后继续检查文件 a 是否是本地文件。如果不满足其中任何一个条件,则会发出标准 XHR 请求。

jQuery.ajaxSettings.xhr = window.ActiveXObject 
// If ActiveXObject exists, and the file is not local, return Standard XHR
// If ActiveXObject exists, and the file is local, return ActiveXHR
? function() {
return !this.isLocal && createStandardXHR() || createActiveXHR(); }
// If ActiveXObject doesn't exist, use StandardXHR
: createStandardXHR;

同样的事情几乎可以这样写:

jQuery.ajaxSettings.xhr = (window.ActiveXObject && this.isLocal) 
? createActiveXHR()
: createStandardXHR();

希望这更容易理解。

我应该注意到,这在 jQuery 2.0 中发生了巨大的变化:

jQuery.ajaxSettings.xhr = function() {
try {
return new XMLHttpRequest();
} catch( e ) {}
};

关于jquery - Ajax 调用在 IE 中不起作用,除非您修改安全设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com