2011-01-14 93 views
0

我使用jQuery追加一个脚本标记一个div,例:jQuery的负载脚本冲突

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

和脚本返回:

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

但是当我追加,通通我的HTML消失了,只有那个标签被写入。

有人能告诉我什么是错的吗?

回答

0

有什么不对?您正在使用document.write() —或至少该脚本的作者正在使用它。这就是document.write()被称为之后,浏览器建立的实际原始文件。我想你的代码是在一些jQuery初始化块:

$(function() { 

    // your code somewhere in here ... 

}); 

因此,它只有当浏览器已经得到所有页面准备好。但在这一点上,一个新的呼叫document.write()将被解释为意味着你想完全用新的东西替换当前页面。

要尝试的一件事是将放在文档中(而不是document.write() !!),然后将<script>标签放入该文档中。

1

首先,让您远离报价:

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

另外文件撰写优良取决于当它被调用。

编辑:除去其他的文本,文件撰写有关其他回答者启发我在此:d感谢@Ivo

0

您加载使用document.write,但你加载脚本后的页面已经在脚本完全加载,因此document.write会覆盖页面的内容。

对于反对使用document.write更多的理由看:
Why is document.write considered a "bad practice"?

为了解决这个问题,你需要包括在HTML源本身的脚本。

0

不使用文件撰写,但appendChild方法追加obejct标签

1

Here的解释是:

运行该页面完成后的任何文件撰写声明负荷将创建一个新页面并覆盖当前页面的所有内容