Замена HTML своим



  • Можно ли заменить частично или полностью html-код страницы после её загрузки?



  • @kain Можно. Вот пример http://community.bablosoft.com/post/1405



  • @kain Да, можете выполнять любой js код на странице.
    Например, такой

    document.getElementById("ELEMENT_ID").innerHTML = 'NEW HTML CODE'
    

    Заменит код элемента с заданным ид



  • @support обошелся без замены. Но спасибо, пригодится)



  • @support не работает это. ReferenceError: Can't find variable: document



  • @kain нужно использовать действие яваскрипт из раздела Браузер



  • @DrPrime ничего не происходит



  • Вообще нужно в ящике мэил менять это:
    <body id="tinymce" class="mceContentBody increase-font compose2" onload="window.parent.tinyMCE.get('toolkit-149748073746138composeEditor').onLoad.dispatch();" contenteditable="true" dir="ltr" style="overflow: auto;"><br><br><br>

    На свой код



  • @kain мейл ру? у меня где то был скрипт для замены письма хтмл'ом, напиши мне завтра после обеда, я скину.



  • @DrPrime ооо, спасибо) Напишу.



  • This post is deleted!


  • Пробовал и так, и эдак...нет пока в басе удобного "Замена элемента"...подскажите пожалуйста, как из например такого:

    <a href="" class="display-item-btn " data-toggle="modal" data-target="abc">Хаха</a>
    

    Сделать такое:

    <a href="" class="display-item-btn " data-toggle="modal" data-target="AAA">Хаха</a>
    


  • @forall 0_1519655344762_Снимок.PNG.png



  • Кто-нибудь знает, возможно ли заменить html страницы до ее выполнения?
    Например, мне нужно заменять id счетчика яндекс метрики на свой до выполнения загрузки. Иначе будет загружаться изначальный id, а второй на замену не будет проходить, так как сигнал о первом счетчике уже будет отправлен.



  • @agility said in Замена HTML своим:

    Кто-нибудь знает, возможно ли заменить html страницы до ее выполнения?
    Например, мне нужно заменять id счетчика яндекс метрики на свой до выполнения загрузки. Иначе будет загружаться изначальный id, а второй на замену не будет проходить, так как сигнал о первом счетчике уже будет отправлен.

    0_1563299506279_2e458c2a-d261-4f4e-bd77-25f923832adc-изображение.png

    Это действие задает скрипт, который должен выполняться на каждой странице и в каждом фрейме сразу после создания страницы. В отличие от действия "Яваскрипт", скрипт, определенный здесь, выполняется в самом начале загрузки страницы, что дает возможность изменять внутренние элементы браузера, такие как window.navigator. Действие должно быть выполнено до загрузки страницы.

    0_1563300321238_1002b0b0-a153-4bab-9e03-7d598a3d12c9-изображение.png



  • @fox Что-то не пашет.
    Я поставил такое выполнение, но innerText не поменялся (в меню "Кейсы"):

    document.getElementsByClassName("b-item2")[0].innerText = "test";
    

    0_1563363073274_test_свой html код.xml

    0_1563363062194_zhazhda.png

    Самое главное: а как можно поменять не html элементы, а javascript? Например, нужно поменять id во фрагменте ниже. Возможно регуляркой поменять html текст и применить к странице?

    <!-- Rating@Mail.ru counter -->
    <script type="text/javascript">
        var _tmr = window._tmr || (window._tmr = []);
        _tmr.push({id: "2775350", type: "pageView", start: (new Date()).getTime()});
        (function (d, w, id) {
            if (d.getElementById(id))
                return;
            var ts = d.createElement("script");
            ts.type = "text/javascript";
            ts.async = true;
            ts.id = id;
            ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js";
            var f = function () {
                var s = d.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(ts, s);
            };
            if (w.opera == "[object Opera]") {
                d.addEventListener("DOMContentLoaded", f, false);
            } else {
                f();
            }
        })(document, window, "topmailru-code");
    </script>
    


  • @agility said in Замена HTML своим:

    @fox Что-то не пашет.
    Я поставил такое выполнение, но innerText не поменялся (в меню "Кейсы"):

    document.getElementsByClassName("b-item2")[0].innerText = "test";
    

    0_1563363073274_test_свой html код.xml

    Действие должно быть выполнено до загрузки страницы, откуда там document?

    Самое главное: а как можно поменять не html элементы, а javascript? Например, нужно поменять id во фрагменте ниже. Возможно регуляркой поменять html текст и применить к странице?

    Получаешь код страницы ссылкой, изменяешь его как хочешь, сохраняешь и загружаешь. Только так.

    Чтобы домен не спалили, поднимаешь свой сервер и в BAS через него загружаешь изменённую страницу.


    Нет паузы между получением браузером кодом страницы и её выполнением.



  • @fox said in Замена HTML своим:

    Получаешь код страницы ссылкой, изменяешь его как хочешь, сохраняешь и загружаешь. Только так.

    Код страницы допустим через get-запрос http клиентом могу получить, затем изменить html.
    Как дальше сохранить это, чтобы загрузить?
    Имеется ввиду сохранить как html файл и через веб-сервер localhost загрузить в басе? Если да, то как сохранить все картинки/css/js файлы и что бы корректно грузило?

    Чтобы домен не спалили, поднимаешь свой сервер и в BAS через него загружаешь изменённую страницу.

    Имеется ввиду в директиву винды hosts добавить правило типа этого?

    localhost mysite.ru
    

    Нет паузы между получением браузером кодом страницы и её выполнением.

    Нет паузы именно в bas'e или в работе самого движка cef? В ZP например такую фичу реализовали (вот), было бы здорово и в bas'e.



  • @fox, так что думаешь по моим вопросам выше? Я все равно так и не понял как у response сделать подмену html, а фишка крайне интересная кто поймет что с ней делать.



  • @agility said in Замена HTML своим:

    @fox, так что думаешь по моим вопросам выше? Я все равно так и не понял как у response сделать подмену html, а фишка крайне интересная кто поймет что с ней делать.

    Что то мне подсказывает, что мне придётся все эти костыли расписывать и настраивать самому :D. Проще подождите, скорее всего эта фишка появится в офф сборке. (скоро)


Log in to reply