Не удается включить файл javascript из внешнего файла javascript в IE6 - PullRequest
0 голосов
/ 06 января 2010

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

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, где попытка добавить элемент head приводит к ошибке «операция прекращена».

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

Ответы [ 5 ]

2 голосов
/ 07 января 2010

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

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

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

В противном случае вызовите вашу функцию в onload тела через обычный старый JavaScript или через фреймворк, такой как jQuery в виде документа.

0 голосов
/ 07 января 2010

Я краду из источника 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);
0 голосов
/ 06 января 2010

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

0 голосов
/ 06 января 2010

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

0 голосов
/ 06 января 2010

Добавьте его к телу. Javascript не обязательно должен входить исключительно в вашего документа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...