При нажатии на кнопку подключать внешний js-скрипт
Делаю так:
document.getElementById('id').innerHTML='<scr'+'ipt type="text/javascript" src="url"></scr'+'ipt>' При нажатии на кнопку скрипт вставляется в элемент id, но не запускается. Как сделать, чтоб он отрабатывал? |
Shurik,
может тут что поможет http://learn.javascript.ru/onload-onerror |
Потому что скрипта по ссылке url нету. Это ж не php, тут переменные внутри строк не парсятся.
|
Цитата:
|
Shurik,
document.getElementById(id).innerHTML='<scr'+'ipt type="text/javascript" src="'+url+'"></scr'+'ipt>' |
document.getElementById(id).innerHTML='<script type="text/javascript" src="'+url+'"></scr'+'ipt>' А теперь вопрос вам: почему именно так? |
Цитата:
|
рони, я имел ввиду: почему так:
document.getElementById(id).innerHTML='<script type="text/javascript" src="'+url+'"></scr'+'ipt>'а не так document.getElementById(id).innerHTML='<scr'+'ipt type="text/javascript" src="'+url+'"></scr'+'ipt>'? |
Aetae,
в основном потому что ошибки возникают на закрывающий тег - я сам когда так нужно просто ставлю слеш document.getElementById(id).innerHTML='<script type="text/javascript" src="'+url+'"><\/script>' |
Это не ошибки же. Просто закрывающий тег закрывает текущий inline <script>. Вот и всё. При загрузке внешнего скрипта такого естественно не происходит.
Меня раздражают люди, что тупо по подобию разрывают открывающий тег. Это говорит о них как о существах с мистическим подходом к жизни. Shurik, script подключённый через innerHTML не исполнится, используйте: function loadScript(url) { var script = document.createElement('script'); script.src = url; document.getElementsByTagName('head')[0].appendChild(script); } |
Цитата:
|
Скопируйте как есть и не парьтесь.
Скрипты загружаются в документ, а не в элемент документа. Это обстоятельство следует учесть и предусматривать в скрипте методы которыми он найдет требуемый элемент. |
Ну да, инлайновые скрипты юзают this, но я полагаю что время их давно прошло.
|
Цитата:
loadScript('http://site.script.js') ? |
Если вы сразу же не будете вызывать функции из динамически загружаемого скрипта, или у вас там вообще нет никаких функций, то да - вот так. Иначе надо дождаться его загрузки, иначе вызов функции которая еще только "загружается" выдаст ошибку и весь скрипт остановится.
Академически обзор методов http://unixpapa.com/js/dyna.html |
Aetae, Простите пожалуйста что не все такие умные как вы и каким то мистическим образом, мы, простые смертные, задеваем ваше внутреннее состояние, господин.
Бесишь ты меня. |
Использовав мой маленький велосипед http://jsfiddle.net/vlasenkofedor/5pDXf/
по нажатию кнопки fcms.loadJs('myscript.js', function () { alert('myscript IS LOADED'); //работам дальше }); |
Часовой пояс GMT +3, время: 05:47. |