【问题标题】:Why does this HTML crash IE?为什么这个 HTML 会导致 IE 崩溃?
【发布时间】:2011-11-22 18:18:39
【问题描述】:

我有一个导致 IE 8 崩溃的页面。我一直把它简化为导致崩溃的 html/javascript。 我知道我将不得不做一些不同的事情来在 IE 中显示我想要的页面而不破坏它。有人知道我可以向 IE 团队报告此问题以解决问题的方法吗?

当您将鼠标悬停在跨度上时会发生崩溃。创建一个临时 .html 文件进行测试。使用 jsfiddle 不会崩溃。

更新:确保 IE 未处于兼容模式以使其崩溃。 Update2:它在安全模式下也会崩溃,所以它不是导致问题的附加组件。我在多台电脑上都试过了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
    <style type="text/css">
        .condPartHover
        {
            border-color: #000000;
            background-color: #E5F0F9;
            color: #1D5987;
        }
    </style>
</head>
<body>
   <ul>
    <li>
        <div>Testing:
            <div style="position:relative; display:inline-block; height:25px;">
                <span style="position:absolute; top:0px; left:0px; border:1px solid #000000; background-color:White;" onmouseover="this.className = 'condPartHover';">test
                </span>
            </div>
        </div>
    </li>
   </ul>
</body>
</html>

【问题讨论】:

  • 我不会崩溃。试试this link
  • 我的 IE8 不会在这个 html 上崩溃。前 2 个 cmets 不相关且不具建设性。
  • @xbrady,你能重现safe mode中的崩溃吗?
  • @Martin。在jsfiddle it doesn't。创建一个html文件,填上这篇文章的那个,在IE8上打开,浏览器就挂了。奇怪的IE:P
  • @Rob 那是因为你将它作为独立的.html 文件运行它会阻止任何 JavaScript 代码。

标签: javascript html internet-explorer internet-explorer-8 crash


【解决方案1】:

有没有人知道我可以向 IE 团队报告此问题的方法 解决了吗?

是的,转到http://connect.microsoft.com/,在搜索框中输入“Internet Explorer 反馈计划”,它会给您一个链接,以便向 IE 团队报告此类错误。他们确实会阅读/采取行动,但不要期望很快。我不知道旧版本 IE 中的错误是否值得修复。它可能只是现在仍然应用于 IE8 的安全修复,而不是任何会改变 HTML 呈现或 Javascript 行为的修复。

【讨论】:

  • 看起来这只适用于 IE 9/10。也许没有办法报告旧浏览器的错误?你会认为他们仍然支持 IE 8,因为他们决定不允许在 Windows XP 上安装 IE 9+。如果没有其他人可以找到报告 IE 8 错误的地方,那么我将其标记为答案。
  • 很公平,但 Connect 似乎是许多 Microsoft 产品的正确错误报告机制。如果他们在那里不接受它,我猜他们也不会以任何其他方式接受错误报告。我同意你认为他们仍然应该支持 IE8,而 XP 至少仍然存在。
【解决方案2】:

用 jQuery 试试 mouseOver 或 mouseEnter。

$('span').mouseover(function() {
  $('span').addClass("condPartHover");
});

此外,您使用的这种方法不再是 HTML 有效的。

【讨论】:

  • 澄清一下,问题是“我该如何解决这个问题?”或“如何向 Microsoft 报告错误”?如果您只是在寻找修复程序,为什么还要使用脚本呢?只需使用:hover
  • 我之前用的是jquery hover功能。我只是将它剥离到它使 IE 崩溃的地方。 $('span').hover( function () { $(this).addClass('condPartHover'); }, function () { $(this).removeClass('condPartHover'); } //仍然会崩溃 IE ) ;
  • 是类名更新触发了崩溃。 addClass 更新导致它崩溃的 className 属性。
【解决方案3】:

您的文档类型不正确,您处于怪癖模式。如果您必须使用 xhtml doctype,请使用这个:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

【讨论】:

  • stricttransitional 文档类型之间存在明显差异,不容忽视。
  • @zzzzBov - 是的,但他也不是有效的 xhtml 过渡版本。新网页不需要过渡,应该始终使用严格。 w3.org/QA/2002/04/valid-dtd-list.html
  • 我完全不同意。许多常见的属性和值在transitional 中是可接受的,而在strict 中是不可接受的(例如:[target="_blank"])。如果你要推荐任何东西,你应该推荐 HTML 5 文档类型:&lt;!DOCTYPE html&gt;
  • @zzzzBov - 过渡文档类型适用于那些不再使用旧的、已弃用的标记的页面。新网页不应该使用这样的东西。我不推荐新 doctype 的原因是因为他对 xhtml 表现出兴趣,正如我在 OP 中所说的那样。
  • 没错,我最终得到了发布的文档类型,因为我尝试了几个,它们都导致 IE 崩溃。我已经更新了文档类型。然而,这仍然会导致 IE 崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2014-10-05
相关资源
最近更新 更多