我正在使用JQuery将脚本标记附加到div,例如:
$("#special_div").append("<script src="http://blablabla.com/id.php?id=0000"></script>");
并且该脚本返回:
document.write("<object ....></object>");
但是当我追加它时,我的所有HTML都消失了,只写了那个标签..
谁能告诉我什么是错的?
答案 0 :(得分:1)
首先逃离你的报价:
$("#special_div")
.append("<script src=\"http://blablabla.com/id.php?id=0000\"></script>");
另外,document.write很好,具体取决于它何时被调用。
编辑:删除了其他文本,其他关于document.write的回答者对此有所启发:D谢谢@Ivo
答案 1 :(得分:1)
Here是解释:
页面加载完成后运行的任何document.write语句都会创建一个新页面并覆盖当前页面的所有内容
答案 2 :(得分:0)
您使用document.write()
时出错了 - 或者至少该脚本的作者正在使用它。这就是document.write()
在浏览器构建了实际原始文档之后被称为时所做的事情。我想你的代码在一些jQuery初始化块中:
$(function() {
// your code somewhere in here ...
});
因此它仅在浏览器已准备好页面时运行。但在此时,对document.write()
的新调用将被解释为您希望完全用新内容替换当前页面。
尝试的一件事是在文档中放置<iframe>
(不是document.write()
!!)然后将<script>
标记放在其中。
答案 3 :(得分:0)
您加载的脚本使用document.write
,但您在页面完全加载后加载脚本,因此document.write
将覆盖页面内容。
有关使用document.write
的更多理由,请参阅:
Why is document.write considered a "bad practice"?
要修复它,您需要在HTML源代码中包含该脚本。
答案 4 :(得分:0)
不要使用document.write,而是使用appendChild来附加对象标记