加载不同jQuery版本时条件注释失效(适配IE8)
解决IE8中app1.js未正常加载执行的问题
看起来你遇到的核心问题是IE8环境下,虽然条件注释没有报错,但app1.js没有被正确执行或识别。结合你的代码和IE8的特性,我总结了几个关键修复点:
1. 修复jQuery版本的加载冲突
你的当前代码中,IE8会先加载不兼容它的jQuery 3.4.0(因为非条件注释的脚本IE8也会执行),这会导致脚本报错中断,后续的jQuery 1.9.0和app1.js可能无法正常运行。
解决方案:把非IE/IE9+的脚本放到针对高版本IE的条件注释中,确保IE8只加载兼容的jQuery版本:
<!--[if gte IE 9]><!--> <script src="https://code.jquery.com/jquery-3.4.0.min.js"></script> <script src="app2.js"></script> <!--<![endif]--> <!--[if lt IE 9]> <script src="https://code.jquery.com/jquery-1.9.0.min.js"></script> <script src="app1.js"></script> <![endif]-->
这样IE8只会加载jQuery 1.9.0和app1.js,避免了高版本jQuery的兼容性错误。
2. 确保DOM加载完成后执行脚本
IE8对DOM加载的时机更敏感,如果你的app1.js在DOM元素渲染前就执行,会找不到.menu-btn和.backdrop元素,导致事件绑定失效,看起来像脚本没运行。
修改app1.js代码,把所有逻辑包裹在$(document).ready()中:
$(document).ready(function() { $(".menu-btn").click(function(){ $(".mobile-nav-header").addClass("open"); $(".backdrop").css("display", "block"); setTimeout(function(){ $(".backdrop").addClass("open"); }, 10); }); $(".backdrop").click(function(){ $(".mobile-nav-header").removeClass("open"); $(".backdrop").css("display", "none"); $(".backdrop").removeClass("open"); }); });
3. 检查脚本路径与语法细节
- 确认
app1.js的相对路径正确,确保它和HTML文件在同一目录(或路径配置正确),否则IE8会加载失败; - 修复
app1.js末尾的语法小问题:给最后一个click事件的函数添加分号,虽然非IE浏览器容错性高,但IE8对语法更严格。
验证步骤
- 清空IE8的缓存,避免旧脚本干扰;
- 打开IE8的开发者工具(F12),切换到“脚本”标签,确认
app1.js已加载; - 在
app1.js的关键代码处添加console.log('app1 running'),查看控制台是否输出,验证脚本是否执行。
内容的提问来源于stack exchange,提问作者Lucinka
相关产品推荐
相关产品推荐

