Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   fetch() загрузка и скрытое событие (https://javascript.ru/forum/events/79301-fetch-zagruzka-i-skrytoe-sobytie.html)

vaisan 21.01.2020 12:05

fetch() загрузка и скрытое событие
 
Имеется такой вопрос: на HTML странице есть элемент div в который загружается с помощью fetch() некий *.html файл с сервера, в котором имеются свои javascript функции по, например, блокировке/показу элементов этого *.html файла. У меня визуальное содержимое этого div меняется в соответствии с *.html файлом, НО почему-то javascript функции не работают, а браузер отладчик не видит ни скрипт, ни новую разметку внутри этого div.

ksa 21.01.2020 12:32

vaisan, вместо долгих описаний лучше всего подходит простенький тестовый пример... ;)

vaisan 21.01.2020 14:48

Вложений: 1
Ещё не понял как присоединить файлы html
Поэтому zip

Запуск index.html с сервера/localhost
Интересующий скрипт находится в divContent.html

ksa 21.01.2020 15:33

Цитата:

Сообщение от vaisan
Ещё не понял как присоединить файлы html

Просто вставляешь их содержимое как текст в сообщение... Потом "обрамляешь" БиБи-кодами
[ HTML ]...[ / HTML ]
Пробелы оставлены для показа...

ksa 21.01.2020 15:36

Цитата:

Сообщение от vaisan
Запуск index.html с сервера/localhost

Я не знаком с bootstrap... Т.ч. для меня это не может быть тестовым примером, извини. :(

Придется тебе ждать другого человека или делать пример именно с fetch(), чего я собственно и ждал...

ksa 21.01.2020 15:39

vaisan, это собственно твое встраивание html "со скриптами"?
Цитата:

Сообщение от vaisan
function XHR(filename) {
            var url = filename;
            fetch(url).then(function (response) {//response.json()
                response.text().then(function (text) {
                    document.getElementById("divSource").innerHTML = text;
                });
            });
        };


рони 21.01.2020 15:48

Цитата:

Сообщение от vaisan
почему-то javascript функции не работают

https://javascript.ru/forum/misc/791...utri-nego.html

рони 21.01.2020 15:48

vaisan,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

ksa 21.01.2020 15:50

vaisan, весь твой пример можно свести к этому
<div id='test'></div>
<script type='text/javascript'>
var txt='<script>alert("Ok")<\/script>';
txt+='<p>Test<\/p>';
document.getElementById('test').innerHTML = txt;
</script>

Так действительно скрипты не отработают... :no:

Нужно создавать элемент script... Добавлять его соответствующим методом на страницу...
Тогда скрипты будут работать.
var o=document.createElement('script');
o.text = 'alert("Ok");';
document.getElementsByTagName('head')[0].appendChild(o);

Manyasha 21.01.2020 16:15

ksa, рони,

подскажите, пожалуйста, а чем плох тег object?
Почему бы не сделать так:
function XHR(filename) {
	var url = filename;
	document.getElementById("divSource").setAttribute("data", filename);
	/*fetch(url).then(function (response) {//response.json()
		response.text().then(function (text) {
			document.getElementById("divSource").innerHTML = text;
		});
	});*/
};


<object id="divSource" style="margin: 20px 20px 10px 20px; height: 480px; width: 75%; overflow-y: auto;" type="text/html"></object>
<!--div id="divSource" style="margin: 20px 20px 10px 20px; height: 480px; width: 75%; overflow-y: auto;"></div-->


vaisan,
попробуйте так, если есть возможность заменить div на object


Часовой пояс GMT +3, время: 14:08.