@frees2

2 часть. Как заставить срабатывать скрипт js, в самом подгружаемом файле?

/toster.ru/q/522913
Демо тест, посмотреть.
/load
В браузере Chrome не загружается второй скрипт. Как это исправить, если возможно, понимаю вопрос сложный!
В браузере Edge всё загружается.

Демо тест.
Страница первого подгружаемого файла:
load.html
<p>Это первый запрос load.html.</p>
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" onload="

var myHead1 = document.getElementById('content');
var myHead2 = document.getElementById('your');

var date = new Date();
var locat =location.pathname;

myHead1.innerHTML = date;
myHead2.innerHTML = locat;


const myObj = foo={
  name: 'Skip',
  age: 2,
  favoriteFood: 'Steak'
};


var json_upload =  JSON.stringify(myObj); 
fetch('load2.html', { method: 'post', headers: ( 'Content-Type', 'application/x-www-form-urlencoded'  ), body: json_upload })
.then(function(response) {if(response.ok) return response.text();  })
 .then(function(data){ document.getElementById('demo2').innerHTML = data;  })
;

//this.parentNode.removeChild(this);
" />


load2.html
<p>Это второй запрос из подгруженного load.html в load2.html</p>
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Interface
Если я правильно понял ваш вопрос, у вас часть страницы запрашивается и вставляется через innerHTML. При этом javascript вставляемый среди прочего кода - не выполняется. Это нормально. Тут https://stackoverflow.com/questions/1197575/can-sc... можно почитать подробнее.

Пофиксить можно если вручную выполнить js через eval(). Т.е. примерно так:
document.getElementById('demo2').innerHTML = data;
$('#demo2 script').each((index, elem) => eval(elem.text()))


Ссылки:
https://www.w3.org/TR/2008/WD-html5-20080610/dom.h...
https://developer.mozilla.org/en-US/docs/Web/API/E...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы