Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 30.12.2019, 00:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Domik942,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 </head>
<body>
<script>
var testHtml = '<head><title>second page</title><script>alert("hello 111");</scr'+'ipt></head><body><p>test script</p><script>alert("hello 222");</sc'+'ript><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').forEach(el => {
        var s = document.createElement('script');
        s.text = el.text;
        el.parentNode.replaceChild(s, el)
    }
)
</script>
</body>
</html>
Ответить с цитированием
  #12 (permalink)  
Старый 30.12.2019, 01:38
Интересующийся
Отправить личное сообщение для Domik942 Посмотреть профиль Найти все сообщения от Domik942
 
Регистрация: 29.12.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Domik942,
[html run height=500]<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">

var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
    '<script src="jquery.min.js"></script>' +
    '<script>alert("Hello 1");' +
    '' +
    '$(document).ready(function(){\n' +
    '    alert(jQuery.fn.jquery);\n' +
    '});</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').forEach(el => {
        var s = document.createElement('script');
        s.text = el.text;
        if ((el.src).length > 0){
            s.src = el.src;
        }
        el.parentNode.replaceChild(s, el)
    }
)


JS выдаёт ошибку. ReferenceError: $ is not defined.
Ответить с цитированием
  #13 (permalink)  
Старый 30.12.2019, 01:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Domik942,
в строке 13.5 загрузите jquery
Ответить с цитированием
  #14 (permalink)  
Старый 30.12.2019, 02:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Domik942,
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 </head>
<body>
<script>
var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
    '<script src="jquery.min.js"></scr'+'ipt>' +
    '<script>alert("Hello 1");' +
    '' +
    '$(document).ready(function(){\n' +
    '    alert(jQuery.fn.jquery);\n' +
    '});</scr'+'ipt>' +
    '<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);
var script = document.createElement('script');
document.querySelector('head').appendChild(script);
script.onload = ()=>
document.querySelectorAll('script').forEach(el => {
        var s = document.createElement('script');
        if(el.text){s.text = el.text; el.parentNode.replaceChild(s, el)}
    });
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js';

</script>
</body>
</html>

Последний раз редактировалось рони, 30.12.2019 в 02:14.
Ответить с цитированием
  #15 (permalink)  
Старый 30.12.2019, 02:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Domik942,
или так ...
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
 </head>
<body>
<script>
var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
    '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></scr' + 'ipt>' +
    '<script>alert("Hello 1");' +
    '' +
    '$(document).ready(function(){\n' +
    '    alert(jQuery.fn.jquery);\n' +
    '});</scr' + 'ipt>' +
    '<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');
        s.onload = resolve;
        if (el.text) {
            s.text = el.text;
        } else s.src = el.src;
        el.parentNode.replaceChild(s, el);
    }))
}, Promise.resolve());
</script>
</body>
</html>
Ответить с цитированием
  #16 (permalink)  
Старый 30.12.2019, 13:21
Интересующийся
Отправить личное сообщение для Domik942 Посмотреть профиль Найти все сообщения от Domik942
 
Регистрация: 29.12.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Domik942,
или так ...
<!DOCTYPE html>
<html>
<head>

var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
    '<script src="jquery.min.js"></script>' +
    '<script>alert("Hello 1");' +
    '' +
    '$(document).ready(function(){\n' +
    '    alert(jQuery.fn.jquery);\n' +
    '});</script>' +
    '<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');
        s.onload = resolve;
        if (el.text) {
            s.text = el.text;
        } else s.src = el.src;
        el.parentNode.replaceChild(s, el);
    }))
}, Promise.resolve());


Странно, <script>alert("Hello 2");</script> хоть и отображается в инспекторе, но он не выполняется.

Последний раз редактировалось Domik942, 30.12.2019 в 14:23.
Ответить с цитированием
  #17 (permalink)  
Старый 30.12.2019, 14:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Domik942,
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
 </head>
<body>
<script>
var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
        '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></scr' + 'ipt>' +
        '<script>alert("Hello 1");' +
        '' +
        '$(document).ready(function(){\n' +
        '    alert(jQuery.fn.jquery);\n' +
        '});</scr' + 'ipt>' +
        '<script>alert("Hello 2")</scr'+'ipt>'+
        '<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());
</script>
</body>
</html>

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

Сообщение от рони Посмотреть сообщение
Domik942,
[html run height=500]<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
Это решение работает.

Можно вас попросить скинуть мне в пм ваш кошелек биткоина или usdt, я вам отправлю $100.
Ответить с цитированием
  #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());
Ответить с цитированием
  #20 (permalink)  
Старый 12.01.2020, 22:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Domik942,
onload 222 не сработает, потому что его сотрёт onload 111(или наоборот), если нужно то и это используйте window.addEventListener("load").
<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>var testHtml = '<head><title>second page</title></head><body><p>test script</p>' +
    '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/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());
</script>



<div>the 4 tag</div>
<div>the 5 tag</div>
<div>the 6 tag</div>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анализ и обработка js m4gz Общие вопросы Javascript 4 27.10.2011 12:10
JS внутри AJAX pagal AJAX и COMET 8 11.10.2011 11:19
Как получит ссылку на элемент внутри которого запустили JS код? aRpi Events/DOM/Window 20 02.10.2011 13:36
JS to innerHTML helgi AJAX и COMET 4 07.12.2008 20:50
Обработка JS в FireFox Andrey_Ugnich Firefox/Mozilla 7 21.06.2008 17:15