即使使用FastInit,IE7“操作已中止”?

时间:2009-07-20 13:20:49

标签: javascript internet-explorer dom

我正在处理的一段javascript代码导致IE中令人讨厌的“Operation Aborted”消息。我很清楚在加载之前你不能修改DOM。果然导致错误的javascript代码行是向主体添加新div标签的行。但是,线路所在的功能是通过FastInit.addOnLoad调用的!我认为这意味着在DOM准备好之后将调用该函数。有没有更好的解决方案来解决使用FastInit的问题?

3 个答案:

答案 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的子项。