jQuery代码在Internet Explorer中无法运行问题求助
解决IE中浏览器检测脚本失效的问题
看起来你的脚本在IE里跑不起来,大概率是未定义的isEdge变量导致了ReferenceError,直接让整个脚本崩掉了。另外,原有的IE检测逻辑也可以再优化下,确保兼容不同版本的IE。
我帮你调整了代码,修复了这些问题,同时保留了原有的检测逻辑:
$(document).ready(function () { // 先定义isEdge变量,避免未定义报错 var isEdge = !window.chrome && !!window.StyleMedia; var is_chrome = !!window.chrome && !is_opera; // 优化IE检测:覆盖IE6-11,同时排除Edge var is_explorer = typeof document !== 'undefined' && !!document.documentMode && !isEdge; var is_firefox = typeof window.InstallTrigger !== 'undefined'; var is_safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); var is_opera = !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0; // 这里写你的隐藏特定HTML代码的逻辑,比如: if (is_explorer) { // 隐藏IE中不需要的元素 $('.ie-hidden').hide(); } else if (is_chrome) { // Chrome下的逻辑 $('.chrome-hidden').hide(); } // ...其他浏览器的逻辑 });
关键修复点说明:
- 添加
isEdge的定义:原代码里直接用了!isEdge但没声明这个变量,IE会抛出未定义错误,导致脚本终止执行。这里用window.StyleMedia来检测旧版Edge,如果是Chromium内核的新Edge,会被is_chrome捕获。 - 优化IE检测逻辑:确保
document.documentMode存在的同时,排除Edge浏览器,避免误判。 - Opera检测补充:原代码的Opera检测不完整,补充了
navigator.userAgent.indexOf(' OPR/')来覆盖新版Opera的情况。
额外注意事项:
- 如果你需要支持IE8及以下版本,请使用jQuery 1.x版本(jQuery 2.x及以上不再支持IE8),并且确保jQuery脚本在你的检测脚本之前加载。
- 浏览器UA检测不是100%可靠的,有些浏览器会修改UA字符串。如果你的需求是针对特定浏览器的特性兼容,更推荐使用特性检测(比如检测某个API是否存在)而不是UA检测。
内容的提问来源于stack exchange,提问作者Ronald Torres
相关产品推荐
相关产品推荐

