LINUX.ORG.RU

Подгрузка внешнего js по onclick

 


1

1

Есть статичная html страница с ссылками, есть js скрипт который лежит на стороннем сервере и вызывается из страницы.
Возможно ли выполнять его только после совершения пользователем действия (onclick)?

★★☆☆
var elem = document.getElementById('elem-id');
elem.addEventListener('click', function(e){
  var script = document.createElement('script');
  script.addAttribute('src', 'http://example.com/js/script.js');
  document.body.appendChild(script);
});

как-то так

Mr_Gentoo
()
Ответ на: комментарий от bvn13

если на вставку скрипка срабатывает document.load, то это явно баг, IE наверное?:)

P.S. только что в хромиуме проверил, document.load не срабатывает.

Mr_Gentoo
()
Ответ на: комментарий от Mr_Gentoo

Его же запустить нельзя будет.

Я когда-то подгружал внешние скрипты в скрытый iframe, запускал их, а потом удалял этот iframe…

Anon
()

кстати, оно должно работать в мобильных браузерах тоже.

xtraeft ★★☆☆
() автор топика
Последнее исправление: xtraeft (всего исправлений: 1)
Ответ на: комментарий от dib2

тащить jquery ради одной этой функции как то избыточно, наверное.
спасибо, оставлю как запасной вариант.

xtraeft ★★☆☆
() автор топика
Ответ на: комментарий от xtraeft

80-90кб, без gzip, если с cdn - то будет высокая вероятность что он уже в кэше браузера (jQuery сейчас лепят везде где надо - где не надо).


ну а потом - где одна функция, там и вторая... :)

dib2 ★★★★★
()
Ответ на: комментарий от xtraeft

не совсем понял, поможет ли он решить мою задачу?

да, можно в обработчик onclick засунуть подгрузку внешнего скрипта через этот загрузчик. Внутри оно похоже на решение которое предложил Mr_Gentoo

maxcom ★★★★★
()

Если есть доступ к серверной части (есть возможность написать серверный скрипт), то можно и без разрешения cross-domain.

Xellos ★★★★★
()

Универсальный вариант для любого браузера

<script type=text/javascript> function loadScript() { var s=document.createElement('script'); s.type='text/javascript'; s.src='http://domain/pathtoscriptandscriptname'; document.getElementsByTagName('head')[0].appendChild(s); } </script> <a onclick=«loadScript()»>Загрузить скрипт</a> или <a href=«javascript:loadScript()»>Загрузить скрипт</a> или onclick=«loadScript()» в каком-то другом элементе (кнопке, картинке и т.п.). Я этот вариант использую для имитации кроссдоменного AJAX описанного на http://ilnytskyy.office-xxi.com Работает в любом бразере.

v7ilnytskyy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.