Проблема, которую я пытаюсь решить, - это скрипт загрузки рекламы, который загружает рекламный код с помощью 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>