Как получить JavaScript, созданный с помощью document.write () для выполнения? - PullRequest
3 голосов
/ 16 сентября 2008

У меня многокадровая раскладка. Один из фреймов содержит форму, которую я отправляю через XMLHttpRequest. Теперь, когда я использую document.write (), чтобы переписать фрейм с формой, а новая страница, которую я добавляю, содержит какой-либо javascript, тогда javascript не выполняется в IE6?

Например:

document.write("<html><head><script>alert(1);</script></head><body>test</body></html>");

В приведенном выше случае содержимое страницы заменяется тестовым, но alert () не выполняется. Это отлично работает в Firefox.

Что такое обходной путь для вышеуказанной проблемы?

Ответы [ 6 ]

1 голос
/ 02 октября 2008

Вместо того, чтобы JS-код был открыт, заключите его в функцию (назовем его "doIt"). Ваше окно фрейма (скажем, его имя «formFrame») имеет родительское окно (даже если оно не видно), в котором вы можете выполнить код JS. Выполните фактическую операцию перезаписи кадра в этой области:

window.parent.rewriteFormFrame(theHtml);

Где функция rewriteFormFrame в родительском окне выглядит примерно так:

function rewriteFormFrame(html) {
    formFrame.document.body.innerHTML = html;
    formFrame.doIt();
}
1 голос
/ 16 сентября 2008

Обходной путь - это программное добавление блоков <script> к заголовочному элементу DOM в JavaScript при помощи функции обратного вызова или вызова метода eval (). Это единственный способ сделать это в IE 6.

0 голосов
/ 16 октября 2009

Вы можете использовать атрибут onload в теге body (<body onload="jsWrittenLoaded()">).

0 голосов
/ 02 октября 2008

Eval и / или динамическое выполнение скриптов - плохая практика Очень плохая практика. Очень, очень, очень плохая практика. Я не могу не подчеркнуть, насколько это плохо.

AKA .: Похоже, плохой дизайн. Какую проблему вы пытаетесь решить снова?

0 голосов
/ 02 октября 2008

Короче говоря: вы не можете этого сделать. Однако библиотеки JavaScript, такие как jQuery, предоставляют функциональные возможности именно для этого. Если вы зависите от этого, попробуйте jQuery.

0 голосов
/ 16 сентября 2008

Другая возможная альтернатива - использовать JSON, динамически добавляя ссылки на скрипты, которые будут автоматически обрабатываться браузером.

Приветствие.

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