Динамический импорт Javascript - PullRequest
0 голосов
/ 09 августа 2011

Я делаю веб-страницу, которая должна быть в состоянии динамически изменять работающий код JavaScript.Часто функции в динамическом коде имеют одинаковые имена, но ведут себя по-разному, поэтому использование document.getElementsByTagName('head')[0].appendChild(script); не вариант.Прямо сейчас у меня есть <script type="text/javascript" id="dynamicScript" src="about:blank"></script> в заголовке документа, и когда я хочу изменить активный скрипт, я вызываю document.getElementById('dynamicScript').src="ajax.php?get=script&script=" + page;, и эта страница PHP выплевывает corrent-скрипт (без тегов).Это не работает, хотя.Я делаю что-то не так или есть что-то еще, что могло бы сработать?

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

То, что вы выплевываете правильный javascript, не означает, что он выполняется.Как указал Стефан, один вариант - использовать плагин getScript для jQuery, чтобы выполнить вашу задачу.

0 голосов
/ 09 августа 2011

Вам нужно добавить новый элемент <script> в DOM, а не просто изменить его. Также у вас нет возможности выгрузить старый скрипт без перезагрузки страницы. Если вам нужно удалить функции и данные, которые были объявлены предыдущим скриптом, вам нужно сделать это программно. Замена функций работает.

Наконец, я рекомендую использовать загрузчик скриптов, такой как LABjs , RequireJS, ControlJS или SexyJS. Делать это вручную - дополнительная работа.

Редактировать: Вы также можете просто использовать getScript () , если вы используете jQuery и не нуждаетесь в дополнительном контроле того, в каком порядке загружаются ваши скрипты.

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