Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5 shiv和附加到正文的元素的问题_Javascript_Jquery_Internet Explorer_Html_Modernizr - Fatal编程技术网

Javascript HTML5 shiv和附加到正文的元素的问题

Javascript HTML5 shiv和附加到正文的元素的问题,javascript,jquery,internet-explorer,html,modernizr,Javascript,Jquery,Internet Explorer,Html,Modernizr,我有一个问题,让HTML5工作的元素添加到IE的正文。我使用的HTML5希夫包括在,但它是与任何其他HTML5库相同的问题 除了直接添加到主体中的HTML5元素外,它对任何元素都可以正常工作,这会给出相同的错误消息,就像我在没有shiv(对方法或属性访问的意外调用)的情况下使用jQuery一样。这是IE(7,8)中加载Modernizer或html5.js的一个突破性示例: $(document).ready(function() { $('body').append('<nav

我有一个问题,让HTML5工作的元素添加到IE的正文。我使用的HTML5希夫包括在,但它是与任何其他HTML5库相同的问题

除了直接添加到主体中的HTML5元素外,它对任何元素都可以正常工作,这会给出相同的错误消息,就像我在没有shiv(对方法或属性访问的意外调用)的情况下使用jQuery一样。这是IE(7,8)中加载Modernizer或html5.js的一个突破性示例:

$(document).ready(function() 
{
    $('body').append('<nav class="test"></nav>');
    $('.test').html("Testing HTML 5");
});
$(文档).ready(函数()
{
$('body')。追加('');
$('.test').html(“测试HTML5”);
});

知道为什么会发生这种情况吗?

我的理解是,HTML5 shiv在页面加载时将HTML5元素添加到DOM中,然后当您在页面加载后添加DOM元素时,IE引擎无法识别它们,因为应用shiv时页面加载时它们不在


想知道这里最好的选择是做另一个
document.createElement(“nav”)

乔·巴特利特在文章中谈到了您的问题。他解释了问题并给出了解决方案(HTML5 innerShiv)

IE8及以下版本的解决方案是插入his,然后将所有html5内容包装在
innerShiv(…)
中,然后再将其插入dom

$("body").append(innerShiv("<nav class=\"test\"></nav>"));
$(“body”).append(innerShiv(“”);

已经试过了,但没用。在DOM页面准备好并使用shived后动态添加HTML5元素也可以很好地工作。只是当添加到身体上时就不一样了。太棒了。偶然发现innerShiv,但认为它不适用于我的问题。显然它做到了,并且工作得很好。@Daff:FYI:新发布的jquery1.7包括IE的innerShiv黑客