JavaScript

设置 innerHTML 属性 导致 未知的运行时错误 IE bug

2

在用 Javascript 更改 HTML 代码的时候,经常会用到某个对象的 innerHTML。在读写标签内的代码或字符串时非常方便。

但 IE 对这个属性的支持不太好,经常容易报出 “未知的运行时错误”,而同样的操作,在 FireFox 和 Opera 下面就都没问题。

到百度和 Google 查了下,发现是 IE 浏览器下,对 <table>、<tbody> 和 <tr> 等标签的 innerHTML 属性进行写操作时会报错。

应该是 IE 处理不当造成的。

目前没有很好的解决办法,只能采取改变 HTML 结构的方式,也就是说,不要对 <table> 等标签应用这个属性,改为对 <div>、<span> 和 <p> 等标签,就没问题了。

比如,运行下面的代码会报错:

Hello Leakon!

改变一下实现方式,就没问题了:

Hello Leakon!

Internet Explorer无法打开站点,已终止操作 解决方案

2

关键词:IE, JavaScript, AJAX, “Internet Explorer无法打开站点,已终止操作”

错误原因:在页面还没有 ready 的时候就调用了 htmlObject 的 appendChild 或者 innerHTML 操作。

解决方案:在 appendChild 或者 innerHTML 操作处判断
document.readyState==”complete”
若为否,则 setTimeout 若干秒之后重新作这个操作。

readyState 有 complete,interactive 等值,具体可参考 Ajax Hacks 这本书,里面对不同浏览器关于此属性的不同取值有详细的说明。

另,IE 浏览器总是存在各种奇怪的问题,有时,只要在适当的地方加入 setTimeout 即可解决。具体是什么原因还没搞明白,只知道这种办法确实有效!

再此感谢 Lqx 同学提供的帮助。

Go to Top