2

我有这个让我发疯的代码。

parent.document.write("<script type='application/javascript' scr='http://backlinker.nl/ip.php?callback=getip'><\/script>");

这有效并添加到 html 文档的 head 部分:

<script type='application/javascript' scr='http://backlinker.nl/ip.php?callback=getip'></script>

但它不执行。不同之处在于,当我将它直接粘贴到没有 parent.document.write 的 html 文档的头部时,它可以工作并执行:

    <script type='application/javascript' scr='http://backlinker.nl/ip.php?callback=getip'></script>

在 firebug html 源代码中给出输出:

<script src="http://backlinker.nl/ip.php?callback=getip" type="application/javascript">
getip({"ip": "195.241.100.221"});
</script>

当通过 parent.document.write 函数加载时没有 IP 输出:

<script src="http://backlinker.nl/ip.php?callback=getip" type="application/javascript">
</script>

任何人都知道为什么 parent.document.write 函数正在工作(它将代码放入 head html 部分)但不加载 ip?!

好吧,伙计们,我们有一个可行的替代方案,但仍然不能回答让我发疯的问题,为什么我的不工作?!

解决方法=

var scriptElement = document.createElement("script");
scriptElement.src = 'http://backlinker.nl/ip.php?callback=getip';
scriptElement.type = "text/javascript"; //specify type so that the browser won't ignore it
var head = document.getElementsByTagName("head")[0] || document.documentElement;

head.appendChild(scriptElement);

4

2 回答 2

2

尝试:

var scriptElement = document.createElement("script");
scriptElement.src = 'http://backlinker.nl/ip.php?callback=getip';
scriptElement.type = "text/javascript"; //specify type so that the browser won't ignore it
var head = document.getElementsByTagName("head")[0] || document.documentElement;
head.appendChild(scriptElement);
于 2013-08-17T02:02:50.303 回答
1

如果要创建脚本元素,请加载并执行 - 请尝试 document.createElement :

var scriptElement = document.createElement("script");
scriptElement.src = 'http://backlinker.nl/ip.php?callback=getip';
document.body.appendChild(scriptElement);
于 2013-08-17T01:48:53.650 回答