document.write上的浏览器bug

时间:2015-11-03 11:01:50

标签: javascript

我有多个像这样的小部件

var c2409 = "<div class="products">PRODUCT1 PRODUCT2 PRODUCT4 ...</div>";
document.write(c2409)

我称之为

<script src="website/getjswidget.aspx?cid=xxxx-xxxx-xxx-xxxx"></script>

现在看起来像我清除缓存之后的某个时候,这取代了我的html中的所有内容,我只得到了一个空白页面,只有我的小部件中的这个div。 替换document.write的其他任何解决方案?

1 个答案:

答案 0 :(得分:0)

这是设计的。

  

write()方法主要用于测试:如果在HTML文档完全加载后使用它,它将删除所有现有的HTML。

Source

如果您想将数据附加到您的网页,请使用:

document.body.innerHTML += 'your HTML code to add'

编辑:如果你想在特定的元素中显示它,你可以这样做:

<!-- HTML element -->
<div id="myData"></div>

<!- Javascript code -->
document.getElementById('myData').innerHTML += 'your HTML'

编辑2(经过一些搜索):您可以使用document.currentScript获取当前脚本元素,然后使用Node.insertBefore在该脚本标记之前创建一个div,以便将数据放入其中。

编辑3:显然document.currentScript在IE中不起作用。但this answer可能有所帮助。