为什么这个HTML会导致IE崩溃?

11
我有一个页面会导致IE 8崩溃。我把它简化到只剩下引起崩溃的html/javascript代码。 我知道我需要采取一些不同的方法,在不破坏页面的情况下在IE中显示页面。有没有人知道我可以通过什么方式向IE团队报告此问题以获得修复?
当你将鼠标悬停在span上时,就会发生崩溃。请创建一个测试用的scratch .html文件。在jsfiddle中使用它不会崩溃。
更新:确保IE不处于兼容模式下才会崩溃。 更新2:即使在安全模式下也会崩溃,所以这不是插件造成的问题。我已经在多台计算机上尝试过了。
<!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>

对我来说,它不会崩溃。请尝试此链接 - Martin.
4
我的IE8在这个HTML上没有崩溃。前两条评论与本质无关且毫无建设性。 - James
@xbrady,你能在安全模式下重现崩溃吗? - Frédéric Hamidi
2
@Martin。在jsfiddle上不会出现这种情况。创建一个HTML文件,将此帖子中的内容填充到其中,然后在IE8上打开它,浏览器将挂起。奇怪的IE:P - OnesimusUnbound
2
@Rob,那是因为你将它作为独立的.html文件运行,它会阻止任何JavaScript代码。 - Shadow The Spring Wizard
显示剩余9条评论
3个回答

2
有人知道我该如何向IE团队报告此问题以得到解决吗?
是的,访问http://connect.microsoft.com/,在搜索框中输入“Internet Explorer反馈计划”,它会给您一个链接,让您向IE团队报告此类错误。他们确实会阅读并采取行动,但不要指望任何快速解决方案。我不知道旧版本的IE中是否值得修复漏洞。现在可能只有安全修补程序才适用于IE8,而不是任何会更改HTML呈现或JavaScript行为的修复程序。

看起来这只适用于IE 9/10。也许没有办法报告旧版浏览器的错误?你会认为他们仍然支持IE 8,因为他们决定不允许在Windows XP上安装IE 9+。如果没有其他人能找到报告IE 8错误的地方,那我就把这个标记为答案。 - xbrady
很好,但是Connect似乎是微软许多产品的适当错误报告机制。如果他们不接受那里的报告,我猜他们也不会以其他方式接受错误报告。我同意你认为他们至少应该在XP存在的时候仍然支持IE8。 - Michael Low

1

尝试使用jQuery的mouseOver或mouseEnter。

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

另外,您正在使用的方法不再符合HTML标准。


1
请澄清一下,问题是“我该如何修复这个问题?”还是“我该如何向微软报告这个错误?”如果你只是想找一个解决方案,为什么要使用脚本呢?只需使用:hover即可。 - Mike Christensen
我之前使用了jQuery的hover函数,后来我把它剥离出来,结果导致IE崩溃。$('span').hover( function () { $(this).addClass('condPartHover'); }, function () { $(this).removeClass('condPartHover'); } //仍然会导致IE崩溃 ); - xbrady
正是className的更新触发了崩溃。addClass更新了className属性,导致了崩溃。 - xbrady

0

您的文档类型不正确,且处于怪异模式。如果您必须使用 XHTML 文档类型,请使用以下文档类型:

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

在编程中,stricttransitional doctype之间有明显的区别,不应忽视。 - zzzzBov
@zzzzBov - 是的,但他的也不是有效的xhtml transitional。新的网页不需要过渡,应该始终使用strict。http://www.w3.org/QA/2002/04/valid-dtd-list.html - Rob
1
我完全不同意。许多常见的属性和值在“过渡”中是可以接受的,但在“严格”中则不可接受(例如:[target="_blank"])。如果你要推荐任何东西,应该推荐HTML 5文档类型:<!DOCTYPE html> - zzzzBov
@zzzzBov - 过渡性文档类型适用于那些正在转向不再使用旧的、已弃用标记的页面。新的网页不应该使用这样的东西。我没有推荐新的文档类型是因为他在原帖中表现出对xhtml的兴趣。 - Rob
是的,我最终采用了发布的doctype,因为我尝试了几种不同的doctype,它们都导致IE崩溃。我已经更新了doctype,但这仍然会导致IE崩溃。 - xbrady

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接