【问题标题】:Embedded JavaScript does not run in IE 10 or 11 (works fine in Chrome and Firefox)嵌入式 JavaScript 无法在 IE 10 或 11 中运行(在 Chrome 和 Firefox 中运行良好)
【发布时间】:2017-10-04 10:21:30
【问题描述】:

我正在尝试构建一个简单的网页,根据用户点击“链接”来替换

的内容

以下代码完全符合我在 Chrome 和 Firefox 中的预期,但在 IE 10 或 11 中什么也不做(除了将链接转为访问的颜色):

<!DOCTYPE html>

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
             $("#activities").click(function(){
                 $("#body").load("test02.html");
             });
        });
    </script>
</head>
<body>
    <div id="header">
        <a href="#" id="activities">Activities</a>
        <!-- this stays the same -->
    </div>
    <div id="body">
        <p>this is the content that arrives without needing prompting</p> 
        <!-- All content will be loaded here dynamically -->

    </div>
    <div id="footer">
        <!-- this stays the same -->
    </div>
</body>
</html>

这是“test02.html”的内容:

<p>---</p>
<p>Hello world!</p>
<p>---</p>

我检查了 IE 中的 javascript 安全设置,所有内容都设置为“启用”。我还尝试将 type="text/javascript" 添加到脚本标签。

一些谷歌搜索发现可能需要重新安装 IE,我已经尝试过了。

有人知道如何在 IE 中使用它吗?

【问题讨论】:

  • IE 控制台有错误吗?
  • 我应该提到这是由我自己的 IIS 服务器在我网络上的另一台机器上运行的。
  • IE 控制台没有错误
  • @JohnCroc:在 IE 控制台中出现错误,抱怨 addEventListener 不存在。这是因为在 Intranet 上,IE 有一个非常愚蠢的默认设置,它告诉它自己蹒跚而行,假装自己不支持标准。你不明白吗??
  • @T.J.Crowder:请忽略我上面的评论。谢谢你。我的前几次尝试没有成功,但是当我将 放在 标签下,在任何其他标签之前,它现在可以工作了。

标签: javascript jquery html internet-explorer


【解决方案1】:

问题在于 IE 在“兼容”模式下自行中断。在这种情况下,它自身崩溃的方式是 未能正确查找您的 div id="body" 元素。 我认为这是我的观察错误,我认为真正的问题是 addEventListener(因为jQuery 2.x 不再回退到attachEvent,因为它不支持 IE8 及更早版本[或类似它们的“兼容”模式]):

我可以复制这个问题。如果我通过将其添加到 head 元素的顶部来告诉 IE 不要破坏自身(例如,不要使用兼容模式),问题就会消失:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />

IE 对 Intranet 站点的默认设置是以“兼容”模式显示它们。

在某一时刻,我完全不确定当处于“兼容”模式时,它不会与 id "body" 混淆该元素。 IE 有被这样的事情弄糊涂的历史。所以你也可以考虑the-body或类似的,但我测试过,似乎不需要它。


旁注:您可能还想将return falsee.preventDefault() 添加到您的点击处理程序,因此它不会跟随# 链接(它将滚动回页面顶部并添加@ 987654334@到地址栏)。

【讨论】:

    【解决方案2】:

    在您的页面下方添加元标记

    <meta http-equiv="X-UA-Compatible" content="IE=edge;chrome=1" />
    

    【讨论】:

      【解决方案3】:

      您的意思是&lt;body&gt; 标签还是&lt;div id="body"&gt;,您是否曾尝试使用以下代码阻止链接的默认行为:

      $(document).ready(function(){
         $("#activities").click(function( e ){
            e.preventDefault(); //<---- add here
            $("#body").load("test02.html");
         });
      }); 
      

      【讨论】:

      • 是的,另外,尝试另一个名称,因为 IE 可能愚蠢到将&lt;body&gt;&lt;div id="body"&gt; 混淆,例如,“错误,body 是保留字”之类的
      • 是的,抱歉,我对此不清楚,将编辑我原来的问题。我的意思是
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 2013-09-27
      • 1970-01-01
      相关资源
      最近更新 更多