Сценарий тега ie6 / 7, содержащий «неожиданный вызов метода или доступа к свойству» - PullRequest
2 голосов
/ 17 июля 2011

Я использую AJAX, чтобы получить содержимое скрипта, а затем использую следующий код:

    var scr = document.createElement('script');
    scr.appendChild(document.createTextNode(script)); // ***
    document.getElementsByTagName('head')[0].appendChild(scr);

Где script встраивается из AJAX.Это прекрасно работает в IE9, Chrome и Firefox.Однако в IE6 и 7 я получаю сообщение об ошибке:

Неожиданный вызов доступа к методу или свойству

IE дает номер строки, обозначенный // ***.

Хотя есть несколько других вопросов по этому поводу, ни один из них, похоже, не решает эту точную проблему.

Ответы [ 3 ]

6 голосов
/ 17 июля 2011

Старые IE не принимают дочерние узлы в элементах скрипта (или в элементах стиля и опций, но это еще два вопроса).

Вместо этого вы можете установить свойство text элемента script. (scripttext - это строка текста сценария.)

var scr = document.createElement('script');
if(window.addEventListener)scr.appendChild(document.createTextNode(script))
else scr.text=scripttext;
document.getElementsByTagName('head')[0].appendChild(scr);
1 голос
/ 17 июля 2011

Если у вас уже есть код в строке, зачем делать из него тег сценария? Не могли бы вы просто позвонить eval(script) на это. Разве это не делает то же самое?

0 голосов
/ 17 июля 2011

document.getElementsByTagName ('head') [0] *; * .appendChild (scr);

Почему вы поставили точку с запятой?

...