IE11提示XMLHttpRequest未定义?技术问题求助
解决IE11中XMLHttpRequest对象不存在的问题
这情况我之前帮同事排查过,大概率是IE11的文档模式兼容设置在搞怪!明明官方说IE10+就支持标准的XMLHttpRequest,但IE11经常会偷偷切换到老版本的兼容模式,导致API无法识别。给你几个靠谱的解决步骤:
检查并修改当前页面的文档模式
按F12打开开发者工具,切换到「仿真」(英文是Emulation)标签页,找到「文档模式」选项,直接选择「Edge (IE11)」,然后刷新页面,再执行var xhr = new XMLHttpRequest()试试,应该就能正常创建对象了。在页面中强制启用IE11标准模式
为了避免每次手动切换,直接在HTML的<head>最顶部添加这个meta标签:<meta http-equiv="X-UA-Compatible" content="IE=edge">注意这个标签必须放在所有其他meta、link等标签之前,确保浏览器优先读取它,强制页面用IE的最高标准模式渲染。
排查企业级兼容性策略
如果你的IE是公司统一部署的,可能组策略里把当前站点加入了兼容性视图列表。这时候可以自己打开IE的「工具」→「兼容性视图设置」,看看有没有你的站点,有的话移除它;如果是组策略强制的,就得找IT部门调整配置了。兼容兜底方案(不推荐优先用)
要是以上方法都行不通,只能写个兼容旧IE的备选函数,同时支持标准XHR和旧版ActiveXObject:function createXHR() { if (typeof XMLHttpRequest !== 'undefined') { return new XMLHttpRequest(); } else if (typeof ActiveXObject !== 'undefined') { // 兼容IE6-IE9的旧写法 return new ActiveXObject("Microsoft.XMLHTTP"); } else { throw new Error("当前浏览器不支持XMLHttpRequest"); } } // 使用方式 var xhr = createXHR();
内容的提问来源于stack exchange,提问作者MUY Belgium
相关产品推荐
相关产品推荐

