我正在处理的一段javascript代码导致IE中令人讨厌的“Operation Aborted”消息。我很清楚在加载之前你不能修改DOM。果然导致错误的javascript代码行是向主体添加新div标签的行。但是,线路所在的功能是通过FastInit.addOnLoad调用的!我认为这意味着在DOM准备好之后将调用该函数。有没有更好的解决方案来解决使用FastInit的问题?
答案 0 :(得分:1)
我不确定FastInit,但我刚回答了一个关于等待DOM准备好的类似问题:
Initiate onclick faster than with document.onload
基本上,您可以使用脚本标记上的defer属性在IE中执行此操作:
<script type="text/javascript" defer>
</script>
这将延迟解析脚本,直到DOM准备就绪。
答案 1 :(得分:0)
...对不起
window.onload = function() {
// Your code??
}
答案 2 :(得分:0)
N.B。 SO正在玩格式化的傻猫;抱歉。
尝试修改脚本元素的祖父素元素时,会发生“操作已中止”错误。因此,例如,以下代码将导致它,因为脚本试图从子div修改正文,这意味着它正在尝试修改其祖父元素:
<body>
<div id="foo">
<script type="text/javascript">
var newThing = document.createElement("div");
/* ### The next line will cause the error ### */
document.body.appendChild(newThing);
<script>
</div>
</body>
相同的代码更改为:
<body>
<div id="foo">
</div>
<script type="text/javascript">
var newThing = document.createElement("div");
/* ### The next line will NOT cause an error ### */
document.body.appendChild(newThing);
<script>
</body>
将不导致错误,因为脚本现在正在修改其IE可以处理的父级。
发生这种情况的最常见原因是您未能在页面的上方关闭div
(或其他元素);找到丢失的关闭标签,你就可以修复它。或者,如果您的脚本实际上 在另一个元素中,请将其移出,使其成为body
的子项。