jquery加载脚本冲突

时间:2011-01-14 16:28:56

标签: javascript jquery

我正在使用JQuery将脚本标记附加到div,例如:

$("#special_div").append("<script src="http://blablabla.com/id.php?id=0000"></script>");

并且该脚本返回:

document.write("<object ....></object>");

但是当我追加它时,我的所有HTML都消失了,只写了那个标签..

谁能告诉我什么是错的?

5 个答案:

答案 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来附加对象标记