如何在IE 8中"启用"由AJAX调用插入的HTML5元素?

Gid*_*don 28 javascript ajax jquery html5 internet-explorer

请参阅问题底部的解决方案.

IE 8(及更低版本)不适用于未知元素(即HTML5元素),无法设置样式或访问大部分道具.他们为此做了大量的工作,例如:http://remysharp.com/2009/01/07/html5-enabling-script/

问题是这对于页面加载时可用的静态HTML非常有用,但是当之后创建HTML5元素(例如包含它们的AJAX调用,或者只是用JS创建)时,它会将这些新添加的元素标记HTMLUnknownElement为假设to HTMLGenericElement(在IE调试器中).

有没有人知道解决这个问题,以便IE 8能够识别/启用新添加的元素?

这是一个测试页面:

<html><head><title>TIME TEST</title>
    <!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
</head>

<body>
    <time>some time</time>
    <hr>
    <script type="text/javascript">
        $("time").text("WORKS GREAT");
        $("body").append("<time>NEW ELEMENT</time>"); //simulates AJAX callback insertion
        $("time").text("UPDATE");
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在IE中,您将看到:UPDATE和NEW ELEMENT.在任何其他现代浏览器中,您将看到UPDATE和UPDATE

小智 25

对于IE7中的所有html5问题,我使用html5shiv并容纳在ajax调用中返回的html5元素我使用innershiv.

到目前为止,这两个小插件对我来说就像一个魅力.

- Praveen Gunasekara

  • 只是为了添加HTML5代码不起作用的原因是因为IE缺乏HTML5支持并且认为HTML5代码无效(如果你的任何标签没有关闭,你将拥有相同的代码).几个月前我遇到了同样的问题(http://ilian.ini.org/internet-explorer-jquery-ajax-and-html5/),真的很难找到究竟是什么问题. (2认同)