Вставка скрипта с помощью innerHTML
Доброго времени суток!
Обратил внимание что если с помощью innerHTML вставить скрипт в страницу, то скрипт не сработает. Те такой код: <div id="n5"></div> <script type="text/javascript"> str = '<script type="text/javascript">'; str += 'alert("true");'; str += '</script>'; n5.innerHTML = str; </script> Работать не будет. Т.е. скрипт в див он вставит, но сам скрипт не сработает. Есть ли возможность заставить работать вставляемые скрипты с помошью innerHTML ? |
Для этого есть eval в крайнем случае.
|
Эм.. а подробней?
|
Т.е. как с помошью innerHTML и eval это все заставить работать?
|
eval("alert(\"true \\ \\ \")");При eval будут проблема с кавычками и \. их надо экранировать. |
Цитата:
<div id="n5"></div> <script type="text/javascript"> str = '<script type="text/javascript">'; str += 'eval("alert(\"true \\ \\ \")");'; str += '</script>'; n5.innerHTML = str; </script> У меня не получилось его заставить заработать... ЧЯДНТ? |
Я знаю, что правильно это делается с помощью document.createElement('script') и .appendChild, но я не могу не использовать innerHTML ибо в реале это обстоит так:
Есть аякс функция которая результат выполнения php вставляет в елемент при помощи innerHTML. Эта функция используется в разных ситуациях с разными элементами и параметрами и изменить её я не могу. Писать еще одну подобную но без innerHTML считаю пустой тратой памяти, так как задача того не стоит, поэтому и хочу узнать есть-ли более рациональное решение? |
Цитата:
подразумевается, что вы должны взять код из тега script и скормить его ф-ции eval также правильным решением будет динамическая генерация тега script методами DOM(createELement, и далее) при вставке в innerHTML содержимое тега script не интепретируется никак |
вот такой
<div id="n5"></div> <script type="text/javascript"> eval("alert(\"true \\ \\ \")"); </script> А если надо вставлять теги скриптов с выполнением их надо создавать через document.createElement('script') и устанавливать свойства с применением к body или head П.С. Незнаю почему но парсер запинается на str += '</script>'; считая это концом тега <script> в коде, хотя он находится ниже... |
Цитата:
|
Часовой пояс GMT +3, время: 00:34. |