Показать сообщение отдельно
  #19 (permalink)  
Старый 12.01.2020, 21:39
Интересующийся
Отправить личное сообщение для Domik942 Посмотреть профиль Найти все сообщения от Domik942
 
Регистрация: 29.12.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Domik942,
<!DOCTYPE html>
Я столкнулся со следующей проблемой.
Почему-то такие события как window.onbeforeunload и window.onload не срабатывают внутри jquery.


<html>
<head>
    <meta http-equiv=content-type content="text/html;charset=UTF-8" />
    <title>test js page</title>
</head>
<body>
<div>the 1 tag</div>
<div>the 2 tag</div>
<div>the 3 tag</div>



<script type="text/javascript" charset="UTF-8" src="script.js"></script>



<div>the 4 tag</div>
<div>the 5 tag</div>
<div>the 6 tag</div>
</body>
</html>



var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
    '<script src="jquery.min.js"></script>' +
    '<script>alert("Hello 1");' +
    '$(function(){\n' +
    '    window.onload = function (){\n' +
    '        alert ("onload 111");\n' +
    '    };\n' +
    '});'+
    'window.onload = function (){\n' +
    '        alert ("onload 222");\n' +
    '    };'+
    '$(document).ready(function(){\n' +
    '    alert(jQuery.fn.jquery);\n' +
    '});</scr' + 'ipt>' +
    '<script>alert("Hello 2")</script>'+
    '<div>the 7 tag</div><div>the 8 tag</div><div>the 9 tag</div></body>';



var parser = new DOMParser();
var doc = parser.parseFromString(testHtml, 'text/html');
var htmlOld = document.querySelector('html');
var htmlNew = doc.querySelector('html');
document.replaceChild(htmlNew, htmlOld);
[...document.querySelectorAll('script')].reduce((promise, el) => {
    return promise.then(() => new Promise((resolve, reject) => {
        var s = document.createElement('script');
        if (el.text) {
            s.text = el.text;
            resolve();
        } else {
            s.onload = resolve;
            s.src = el.src;
        }
        el.parentNode.replaceChild(s, el);
    }))
}, Promise.resolve());
Ответить с цитированием