К примеру:
var scriptCode = '<script> function faf() { alert(123); }';
document.head.innerHTML = document.head.innerHTML + scriptCode;
При последующей попытке вызвать код функцию faf() пишет что функция не найдена. Как решить эту проблему? Сразу скажу что через внешний src, решение не подойдет.
document.getElementById('x').addEventListener("click", function() {
var tag = document.createElement('script');
var scriptCode = document.createTextNode("function faf() { alert(123); };");
tag.appendChild(scriptCode);
document.head.appendChild(tag);
});
document.getElementById('y').addEventListener("click", function() {
faf();
});
<button id="x">Click to set function</button><br>
<button id="y">Run function</button>
Если у вас уже есть кусок скрипта в строке и вам надо его выполнить - это тот самый момент когда надо вспомнить про существование eval
:
var scriptCode = 'function faf() { alert(123); }';
eval(scriptCode);
faf();
Но тут есть тонкость: eval
выполняет код в текущей области видимости, и если вы напишите так в некоторой функции - то faf
станет локальной функцией, а не глобальной. Если вам нужна глобальная функция - надо либо запустить eval
не напрямую:
window.eval('function faf() { alert(123); }');
Либо опубликовать faf
в глобальном объекте после выполнения:
eval('function faf() { alert(123); }');
window.faf = faf;
Либо сразу записывать его туда:
eval('window.faf = function() { alert(123); }');
Также можно вспомнить про конструктор Function
:
window.faf = new Function('alert(123)');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот станица самого плагина проблема в том что запросом отправляется только картинка, а появилась необходимость отправлять дополнительные...
Есть iframe, генерирующийся динамическиЧто в нём - я не знаю, но доступ к нему через contentWindow есть
У меня есть приложение на Angular 2Все url на статику в этом приложении начинаются с / (что очевидно)
Нужно отсортировать список, через js/jquery, с использованием 1 селектора ul