You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载不同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对语法更严格。

验证步骤

  1. 清空IE8的缓存,避免旧脚本干扰;
  2. 打开IE8的开发者工具(F12),切换到“脚本”标签,确认app1.js已加载;
  3. 在app1.js的关键代码处添加console.log('app1 running'),查看控制台是否输出,验证脚本是否执行。

内容的提问来源于stack exchange,提问作者Lucinka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:28:49