в 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>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости