Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   При нажатии на кнопку подключать внешний js-скрипт (https://javascript.ru/forum/dom-window/46225-pri-nazhatii-na-knopku-podklyuchat-vneshnijj-js-skript.html)

Shurik 02.04.2014 15:08

При нажатии на кнопку подключать внешний js-скрипт
 
Делаю так:
document.getElementById('id').innerHTML='<scr'+'ipt type="text/javascript" src="url"></scr'+'ipt>'


При нажатии на кнопку скрипт вставляется в элемент id, но не запускается.

Как сделать, чтоб он отрабатывал?

рони 02.04.2014 15:36

Shurik,
может тут что поможет http://learn.javascript.ru/onload-onerror

Erolast 02.04.2014 16:19

Потому что скрипта по ссылке url нету. Это ж не php, тут переменные внутри строк не парсятся.

Shurik 02.04.2014 17:15

Цитата:

Сообщение от Erolast (Сообщение 305633)
Потому-что скрипта по ссылке url нету. Это ж не php, тут переменные внутри строк не парсятся.

Как тогда сделать? Я только начинаю осваивать js.

рони 02.04.2014 17:21

Shurik,
document.getElementById(id).innerHTML='<scr'+'ipt type="text/javascript" src="'+url+'"></scr'+'ipt>'

Aetae 02.04.2014 18:38

document.getElementById(id).innerHTML='<script type="text/javascript" src="'+url+'"></scr'+'ipt>'

А теперь вопрос вам: почему именно так?

рони 02.04.2014 18:55

Цитата:

Сообщение от Aetae
А теперь вопрос вам: почему именно так?

если вопрос ко мне то незнаю, иной способ есть в ссылке которую я указал выше.

Aetae 02.04.2014 18:57

рони, я имел ввиду: почему так:
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>'
?

рони 02.04.2014 19:02

Aetae,
в основном потому что ошибки возникают на закрывающий тег - я сам когда так нужно просто ставлю слеш
document.getElementById(id).innerHTML='<script type="text/javascript" src="'+url+'"><\/script>'

Aetae 02.04.2014 19:29

Это не ошибки же. Просто закрывающий тег закрывает текущий inline <script>. Вот и всё. При загрузке внешнего скрипта такого естественно не происходит.

Меня раздражают люди, что тупо по подобию разрывают открывающий тег. Это говорит о них как о существах с мистическим подходом к жизни.

Shurik, script подключённый через innerHTML не исполнится, используйте:
function loadScript(url) {
	var script = document.createElement('script');
	script.src = url;
	document.getElementsByTagName('head')[0].appendChild(script);
}


Часовой пояс GMT +3, время: 03:38.