Mesuti
@Mesuti

Почему в верстке, загруженной по XMLHttpRequest GET не работают скрипты?

Привет!
Решил попробовать технику подгрузки контента без смены URL адреса.
Почему подгружаемый script не отрабатывает?

При клике на пункты меню, контент загружается с помощью XMLHttpRequest с помощью GET запросов
xhr.open('GET', page.html, false);
//...
content.innerHTML = xhr.responseText;


Код page.html
<p>Lorem</p>
<script>alert('test')</script>


Верстка у page.html вся загружается в место для контента.
Но почему не работают скрипты с теге script?

p.s.
На соседнем ресурсе говорят, что нужно заново инициализировать скрипты, потому что после подгрузки они становятся простой строкой.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 2
Stalker_RED
@Stalker_RED
name = "<script>alert('I am John in an annoying alert!')</script>";
el.innerHTML = name; // harmless in this case
Хотя это может выглядеть как атака cross-site scripting, результат безопасный. HTML5 указывает на тег <script> вставленный через InnerHTM должен не выполнится.

https://developer.mozilla.org/ru/docs/Web/API/Elem...
Ответ написан
FFxSquall
@FFxSquall
Могу писать код, могу не писать
function evalScripts(el) {
    var $scripts = el.querySelectorAll('script');
    for (var i = 0; i < $scripts.length; i++) {
        var $script = $scripts[i];
        var s = document.createElement('script');
        s.type = 'text/javascript';
        if ($script.src) {
            s.src = $script.src;
        } else {
            s.textContent = $script.innerText;
        }
        el.appendChild(s); // можно вставить в head
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект