我可以选择在Internet Explorer中避免此错误(和document.write)吗?

时间:2011-06-08 19:06:47

标签: javascript internet-explorer cross-browser

我正在维护一些具有太多document.write个实例的代码。例如,代码将document.write一个div,然后使用DOM查找该div,然后向其附加<img>

我试图重构一个相关的部分看起来更像这样:

var node_to_append = document.createElement("div");
//node_name is a hardcoded constant
node_to_append.id = node_name;

var i = 0;
for( i = 0; i < request_urls.length; i++) {
    var image_to_append = document.createElement( "img" );
    image_to_append.width = 1;
    image_to_append.height = 1;
    image_to_append.alt = "";
    image_to_append.src = request_urls[ i ];
    node_to_append.appendChild( image_to_append );
}
//finally, append the div to the HTML doc
document.body.appendChild( node_to_append );

这在IE中引发错误,称“Internet Explorer无法打开Internet站点http://blah.com。操作已中止。”

我被告知这是因为我确实需要使用document.write。我希望有一个替代方案可以让我使用上面的方法而不是强迫我将我的节点变成一个字符串(例如“”)并通过document.write附加它。任何人都可以建议解决我的问题吗?

1 个答案:

答案 0 :(得分:2)

如果此代码中包含document.writes,那么在加载/解析页面时它正在运行,不是吗?您应该将您的代码包装在window.onload事件处理程序中。更好的是,使用jQuery的ready事件,或者另一个lib的dom ready wrapper。