我要解决的问题是一个广告加载脚本,它使用 jsonp 加载广告代码并将其插入到 dom 中。
现在,有时广告代码将包含 javascript 标签,我认为只需将它们移至头部,它们就会运行。理论上效果很好,但是当我制作一个脚本来将脚本标签移动到头部时,我遇到了一些奇怪的行为。
所以我写了这段代码来测试脚本的移动部分,消除了其余代码作为错误源。
我得到相同的结果,如果我在 div 中只有两个脚本,它会移动其中一个,如果我有 3 个脚本,它会移动其中 2 个。在下面粘贴的代码中,它移动了脚本 1 和 3,跳过了远程 javascript 引用和最后一个脚本标签。
至少知道为什么会发生这种情况以及是否可以解决会很有趣。
编辑:为了澄清一件事,如果我首先放置远程 jquery 脚本,然后放置一个简单的脚本标签,它会将远程脚本标签移动到头部并跳过第二个脚本标签。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
// get div id
function test() {
var td = document.getElementById('testId');
var scripts = td.getElementsByTagName("script");
console.log("No. of scripts to transfer to head: "+scripts.length);
for(i=0;i<scripts.length;i++) {
var curScript = scripts[i];
document.head.appendChild(curScript);
}
}
</script>
</head>
<body onload="test();">
<div id="testId">
<script type="text/javascript">var firstScript = 1;</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">var secondScript = 1;</script>
<script type="text/javascript">var thirdScript = 1;</script>
</div>
</body>
</html>