IE下,写innerHTML出现未知的运行时错误

前天把之前写的Ajax代码稍微的修改下,结果在ie下竟然报错了,说是:”未知的运行时错误”.我晕,但是在Firefox下的表现是正常的.我只是修改了下几个标签的内容,照理说不会有问题的,而且原来也是一直很正常的,这让我感到很困惑.于是,我在网上搜寻了一番,网上的看到的解释是:

这主要是IE在对innerHTML进行写操作的时候会检查element是否具备做为这些内容中html对象容器的要求,比如如果你是在一个p里加入包含<li>的html代码,这是会出错的。所以如果你发现这些错误出现,尝试做两件事情:

1、检查你尝试加到innerHTML的html代码是否包含破损的html标签,如没有<ul></ul>包围的<li></li>.

2、把你的容器改成那些比较“包容”的标签,如<span></span>,<div></div>

特别注意的是<tbody>,<table>,<tr>标签里面加正确格式的<td>标签都有可能出错,所以应该避免使用这些标签作为容器,必要时可以用<td>作为容器,再嵌套一层表格。

这段描述让我想起我刚才改了的标签,我把原来的容器由div改成了p,而返回的内容里是3个ul列表,虽然标签是闭合的,但p不能包含ul列表!因为在嵌套规则里,p应该是包含inline元素的,而ul是block元素,所以才出现了前面说的那个错误,于是我把标签改了回去,果然又正常了.

最后附上:正确的嵌套规则图

如需转载,请注明出处:https://i.wanz.im/2009/12/10/ie_innerhtml_error/

Comments

  1. By zhenn

    回复

  2. By 丸子

    回复

  3. By rekey

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.