首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery,html5,append()/appendTo()和IE

jQuery,html5,append()/appendTo()和IE
EN

Stack Overflow用户
提问于 2009-07-27 23:17:44
回答 5查看 14.2K关注 0票数 11

如何复制:

  1. 创建html5页面.

确保remysharp.com/2009/01/07/html5-enabling-script/添加了

  1. 脚本,以便IE注意到标记.

  1. 创建一个硬编码的<section id='anything'></section>标记.

  1. 使用jQuery 1.3.2,附加另一个节标记:$('#anything').append('<section id="whatever"></section>');到目前为止,所有的浏览器都能正常工作。

  1. 重复前面的步骤。$('#whatever').append('<section id="fail"></section>');这里是IE6/7失败的地方。火狐/Safari将继续工作。

错误

思考

  • 可能是IE6/7无法处理HTML5节标记。我这么说是因为当我将步骤4从<section>改为<div>时,IE6/7将开始工作。

  • 如果我使用document.createElement()并创建我的新元素,它可以工作,但似乎jQuery的append()与html5元素有问题。
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-20 13:19:36

这个bug在IE的innerHTML实现中--由于某些原因,它不喜欢通过innerHTML插入的“未知”元素,而DOM脚本则很好。

jQuery使用创建一个持久化div,然后删除要通过innerHTML附加的标记。IE现在将未知元素看作是两个新的破碎元素,即<article>content</article>被看作是ARTICLE#text/ARTICLE,由innerHTML borking引起的。

下面是一个示例,在IE中查看它,您将看到innerHTML插入方法错误地报告了在div:http://jsbin.com/olizu中插入的3个节点

那些没有IE的人的截图:http://leftlogic.litmusapp.com/pub/2c3ea3e

票数 18
EN

Stack Overflow用户

发布于 2010-04-04 21:57:21

我也遇到过这个问题。解决方案似乎是在已经附加到文档的元素上使用innerHTML,然后提取创建的节点。我创建了这个li'l函数来实现这个功能:

http://jdbartlett.github.com/innershiv/

票数 6
EN

Stack Overflow用户

发布于 2009-07-28 17:45:19

大伙儿,把你们的挖苦记在那里。通过查看http://html5shiv.googlecode.com/svn/trunk/html5.js,html5 shiv成功地欺骗了IE6/7来执行createElement()。

在上面的karbassi的例子中,人们希望IE6/7会首先关注html5 shiv,然后按照预期的方式执行jQuery追加()。显然,在附加到附件时,它不会按照这个顺序进行操作。这是很方便知道的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1191164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档