2010-01-06 2 views
0

Моя проблема заключается в том, что мне нужно динамически включать файл javascript из другого внешнего файла javascript. Я пытаюсь сделать это с помощью этой функции:Невозможно включить javascript-файл из внешнего файла javascript в IE6

function addCustomScriptTag(url) { 
    var scriptTag=document.createElement('script'); 
    scriptTag.type = 'text/javascript'; 
    scriptTag.src=url; 
    var myElement = document.getElementsByTagName("head")[0]; 
    myElement.appendChild(scriptTag); 
} 

Проблема происходит только в IE6, где пытается добавить к головной элемент вызывает «операция прервана» ошибка.

Любая помощь будет оценена

+1

Выстрел в темноте, вы можете попробовать прикрепления его к телу, а? –

+0

Что произойдет, если вы не установите атрибут type? что, если вы присоединитесь к телу? нет IE6, чтобы проверить, извините. –

+0

Я проверил этот код в WinXP SP3 с IE6: он работает. – ZippyV

ответ

0

Append его к телу затем. Javascript не должен идти исключительно в голову < > вашего документа.

+0

Если вы добавляете к телу, ошибка все еще встречается в IE6 и вводит проблему в IE7. – Ben

+0

У вас возникла другая проблема, я просто протестировал ваш скрипт, включив скрипт с предупреждением («привет»); в IE6 отлично работает. – Erik

+1

Эрик: Я могу реплицировать проблему, поскольку он описал –

0

Рассмотрите возможность использования библиотеки jQuery, а затем используйте эквивалент (если не используете jQuery) getScript. По большей части это будет относиться к кросс-браузерным причудам и несоответствиям.

+1

. Мы используем решение поставщика, и мы не можем редактировать источник. То, что мы пытаемся загрузить динамически, - JQuery – Ben

-2

Я думаю, что это потому, что IE6 не поддерживает getElementsByTagName(), попробуйте заменить его document.body.

2

Это зависит, когда вы добавляете его в элемент DOM головки. Операция прерывается во всех версиях IE, потому что вы пытаетесь модифицировать элемент DOM через JavaScript до того, как этот элемент DOM завершил загрузку, http://support.microsoft.com/default.aspx/kb/927917.

Если вам нужен этот скрипт, загруженный сразу, вы можете сделать старый файл document.write для добавления тега сценария, например.

<head> 
     <script>document.write('<script src='yourUrl.js'><\/scr'+'ipt>');</script> 
</head> 

В противном случае обратитесь к функции в OnLoad тела через обычный старый JavaScript или с помощью рамки, как JQuery а-ля document.ready.

0

Я краду из источника JQuery:

var head = document.getElementsByTagName("head")[0]; 
var script = document.createElement("script"); 
script.src = s.url; 
// Attach handlers for all browsers 
script.onload = script.onreadystatechange = function(){ 
    if (!done && (!this.readyState || 
      this.readyState == "loaded" || this.readyState == "complete")) { 
     done = true; 
     success(); 
     complete(); 
     // Handle memory leak in IE 
     script.onload = script.onreadystatechange = null; 
     head.removeChild(script); 
    } 
}; 

head.appendChild(script); 
Смежные вопросы