вставка кода как в jQuery.html()

295
26 сентября 2017, 08:32

в 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, но не выполняет код

Answer 1

При условии наличия только инлайн-скриптов на 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>

Answer 2

Как вариант - добавляй js-код в фунцию и выполняй ее после добавления блока на страницу.

UPD:

Пример решения:

Если так важен именно инлайн скрипт, то переделаем его следующим образом. Оберене все его содержимое в одну функцию, которую будем вызывать.

var inner = 'hello<script>function onready() { alert(1); }<\/script>'; 
document.getElementById('bla').innerHTML = inner; 
onready();
<div id="bla"></div>

READ ALSO
Как кнопки, сделать такими?

Как кнопки, сделать такими?

Как сделать с кнопками, подобное:

257
преобразовать строку в масив

преобразовать строку в масив

как преобразовать строку например

238
Объясните методику авторизации OpenID(PHP)

Объясните методику авторизации OpenID(PHP)

Нужно сделать авторизацию по openID wargaming(Авторизация по средствами API не интересует - от неё и избавляюсь)

387