рекурсивный document.write в браузере IE - PullRequest
0 голосов
/ 01 августа 2011

В javascript / jscript.Мы можем использовать document.write("<script...") для загрузки фрагмента html в документ.Но когда есть другой document.write внутри фрагмента HTML.Некоторые браузеры выполняют рекурсивную загрузку сценариев, но некоторые нет (IE).

Вот пример.Document.write внедряет в документ один внешний скрипт (js1.js) и встроенный скрипт.Встроенный скрипт вызовет переменную, определенную в js1.js.Это требует, чтобы браузер загружал js1.js до выполнения встроенного скрипта.В гекконах и сафари на основе brwoser.Оно работает.Но в браузере IE это отстой.

test.html

<!DOCTYPE HTML>
<html>
<head><title></title></head>
<body>
    <textarea id="tagContent" style="width:600px;height:400px;">
<script type="text/javascript">
document.write(unescape("%3Cscript src='js1.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
alert(xx);
</script>
    </textarea>

    <script type="text/javascript">
        document.write(document.getElementById("tagContent").value);
    </script>

</body>
</html>

js1.js

window.xx = "ssss";

Я хочу найти способ сделать инъекцию в IE.Любая идея приветствуется.Спасибо!

1 Ответ

1 голос
/ 01 августа 2011

Вы захотите объявить свой элемент скрипта и добавить его в структурированном виде:

var myScript = document.createElement("SCRIPT");
myScript.src='js1.js';
myScript.type='text/javascript';

document.getElementsByTagName("HEAD")[0].appendChild(myScript);

Удачного кодирования.

B

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