@NickBAS
Xpath получить текст
или
Первое вхождение
data-count=(\d+)@agility said in Замена HTML своим:
Кто-нибудь знает, возможно ли заменить html страницы до ее выполнения?
Например, мне нужно заменять id счетчика яндекс метрики на свой до выполнения загрузки. Иначе будет загружаться изначальный id, а второй на замену не будет проходить, так как сигнал о первом счетчике уже будет отправлен.

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

@fox Что-то не пашет.
Я поставил такое выполнение, но innerText не поменялся (в меню "Кейсы"):
document.getElementsByClassName("b-item2")[0].innerText = "test";
0_1563363073274_test_свой html код.xml

Самое главное: а как можно поменять не 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";
Действие должно быть выполнено до загрузки страницы, откуда там 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.
@agility said in Замена HTML своим:
@fox, так что думаешь по моим вопросам выше? Я все равно так и не понял как у response сделать подмену html, а фишка крайне интересная кто поймет что с ней делать.
Что то мне подсказывает, что мне придётся все эти костыли расписывать и настраивать самому :D. Проще подождите, скорее всего эта фишка появится в офф сборке. (скоро)
Есть такой html:
<div class="grid-parent description-regular">
<div data-text="signinMsg" class="grid-child description-regular warning" dir="ltr">Неправильный идентификатор входа в сеть (адрес электронной почты) или пароль.</div>
</div>
Нужно убрать строку "Неправильный идентификатор входа в сеть (адрес электронной почты) или пароль"
Выполняю такой js на странице
getElementsByClassName('grid-child description-regular warning').innerHTML = '';
Но не работает
Подскажите как правильно сделать
@vndes43ta said in Замена HTML своим:
Есть такой html:
<div class="grid-parent description-regular"> <div data-text="signinMsg" class="grid-child description-regular warning" dir="ltr">Неправильный идентификатор входа в сеть (адрес электронной почты) или пароль.</div> </div>Нужно убрать строку "Неправильный идентификатор входа в сеть (адрес электронной почты) или пароль"
Выполняю такой js на странице
getElementsByClassName('grid-child description-regular warning').innerHTML = '';Но не работает
Подскажите как правильно сделать
Метод getElementsByClassName возвращает массив элементов. Используйте действие "Выполнить Javascript На Элементе" с кодом
self.innerHTML = ""
@vndes43ta said in Замена HTML своим:
@Fox Спасибо большое, это работает
Не подскажите еще как сделать также с помощью js кода?
если элемент с этим классом один, то вот так:
getElementsByClassName('grid-child description-regular warning')[0].innerHTML = ''
@Fox said in Замена HTML своим:
@vndes43ta said in Замена HTML своим:
@Fox Спасибо большое, это работает
Не подскажите еще как сделать также с помощью js кода?если элемент с этим классом один, то вот так:
getElementsByClassName('grid-child description-regular warning')[0].innerHTML = ''
так тоже не работает почему то
прикрепил весь html
html.html
@vndes43ta said in Замена HTML своим:
@Fox said in Замена HTML своим:
@vndes43ta said in Замена HTML своим:
@Fox Спасибо большое, это работает
Не подскажите еще как сделать также с помощью js кода?если элемент с этим классом один, то вот так:
getElementsByClassName('grid-child description-regular warning')[0].innerHTML = ''так тоже не работает почему то
прикрепил весь html
html.html
document.querySelector('[data-text="signinMsg"]').innerHTML = ''
@Fox said in Замена HTML своим:
Проще подождите, скорее всего эта фишка появится в офф сборке. (скоро)
@Fox, как все же, не планируется добавить? А то полгода прошло :) Без подмены response сервера тяжело живется
@agility said in Замена HTML своим:
@Fox said in Замена HTML своим:
Проще подождите, скорее всего эта фишка появится в офф сборке. (скоро)
@Fox, как все же, не планируется добавить? А то полгода прошло :) Без подмены response сервера тяжело живется
В планах, но ни каких точных дат сказать не могу
@bahezzz said in Замена HTML своим:
@Fox можешь подсказать, как обратится с помощью getElementsByClassName, если элемент лежит внутри FRAME ?
Селектор>XPATH> id("editor_ifr") >FRAME> >XPATH> id("tinymce")/div
Чегось? Метод getElementsByClassName() возвращает html элементы по классу, а селектор вы указываете BAS'a. Что вы хотите сделать то?
@bahezzz said in Замена HTML своим:
@Fox Хочу получить элемент со страницу, который лежит внутри FRAME и изменить как как в примере выше от разработчика document.getElementById("ELEMENT_ID").innerHTML = 'NEW HTML CODE'
Используй действие "Выполнить Javascript На Элементе" с кодом:
self.innerHTML = 'NEW HTML CODE'