в jquery можно сделать так:
$('#bla').html('hello<script>alert(1)<\/script>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id='bla'></div>
при этом вставляется текст и запускается скрипт.
как сделать то же самое, только без jQuery?
пробую через innerHTML, но оно только добавляет html, но не выполняет код
При условии наличия только инлайн-скриптов на js так:
var dest = document.getElementById('dest');
var html = 'hello<script>console.log(1)<\/script> world<script>console.log(2)<\/script>!';
dest.innerHTML = html;
for (var s of dest.querySelectorAll('script')) {
(1,eval)(s.textContent);
}
<div id='dest'></div>
Как вариант - добавляй js-код в фунцию и выполняй ее после добавления блока на страницу.
UPD:
Пример решения:
Если так важен именно инлайн скрипт, то переделаем его следующим образом. Оберене все его содержимое в одну функцию, которую будем вызывать.
var inner = 'hello<script>function onready() { alert(1); }<\/script>';
document.getElementById('bla').innerHTML = inner;
onready();
<div id="bla"></div>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно сделать авторизацию по openID wargaming(Авторизация по средствами API не интересует - от неё и избавляюсь)