Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Выполнять при каждой загрузке страницы в браузере
-
@DuckDuck у меня все же случай немного другой , у тебя как понял работа с dom тебе нужно дождатся загрузки dom.
А оно срабатывает после создания страницы.
Создание страницы не значит что оно имеет код в себе.
В идеале оно должно до появления DOM сработать -
@DrPrime said in Выполнять при каждой загрузке страницы в браузере:
который при событии выполнит очистку body
При каком событии? - моя задача сделать подмену всей страницы на ту что я хочу. То есть до исполнения/рендеринга страницы сделать полную ее замену.
Другие варианты со своим сервером, подменой днс и так далее я нашел. Но я рассчитывал на простой экшен, и пару лет назад когда игрался с яндексом, кажется этот метод работал. -
function ready() { var html = document.documentElement; // Получаем корневой элемент <html> html.innerHTML = 'Изменено'; // Изменяем содержимое корневого элемента console.log('ready'); } document.addEventListener("DOMContentLoaded", ready); -
@biohacker01 это в этом же экшене - при каждой загрузке ? ок - попробую - респект за дело, а не за холивар.
-
- Вероятно, функция в BAS Execute On Every Page Load In Browser реализует API https://pptr.dev/api/puppeteer.page.evaluateonnewdocument.
- А нужная отсутствующая функция в BAS https://pptr.dev/api/puppeteer.page.setrequestinterception, которая делает все, что нужно и даже больше. А нужно intercept requests - то есть перехват и манипуляция данными вкладки(page).
Я на этом форуме давал небольшой пример замены. Пример не раскрывает всю мощь этой функции, а лишь ее часть.
-
@sergerdn Блин, ну опять ты о своем о девичьем - о бензине - ну пойми ты - тут не форум про пипитер, тут форум баса - а бас это такая штука - которая в основном на кубиках и речь в данном топике о кубике, конкретном кубике в бас. Называется он выполнить при каждой загрузки - то есть до исполнения кода.
Или ты хочешь сказать что этот кубик можно улучшить ? -
@sergerdn Если есть решение как реализовать такое самому на любой библеотеке )

отблагодарю ,и быстро перепрыгну писать на playwright )А пока к сожалению я не нашел как запихать браузеры по контейнерам таким, чтоб они не открывались на всю подрят, и без headless
-
@DuckDuck said in Выполнять при каждой загрузке страницы в браузере:
@sergerdn Блин, ну опять ты о своем о девичьем - о бензине - ну пойми ты - тут не форум про пипитер, тут форум баса - а бас это такая штука - которая в основном на кубиках и речь в данном топике о кубике, конкретном кубике в бас. Называется он выполнить при каждой загрузки - то есть до исполнения кода.
Или ты хочешь сказать что этот кубик можно улучшить ?- Ты не первый, у кого встала задача перехвата и манипуляция данных. Я глубоко уверен, что данный функционал нужен в BAS из коробки, а его пока нет. Нужно просить его реализовать.
- У BAS есть библиотека, для управления встроенным браузером, которая реализует api puppeteer. https://github.com/CheshireCaat/puppeteer-with-fingerprints.
BAS это не только кубики(IDE), но и сам браузер. Всегда можно было прицепиться к запущенному браузеру BAS(https://chromedevtools.github.io/devtools-protocol/) и что-то там делать. И сейчас можно.
А с недавних пор есть готовые библиотеки(не только реализующие api puppeteer, я его привожу в пример, потому что достаточно известный) для манипуляции с браузером из BAS.
Из твоих постов в это ветке форума не понятно требования к реализации скрипта. Если скрипт пишется для себя(например), то я не вижу причин почему бы не рассмотреть вариант управлять браузером из BAS с помощью НЕ встроенной IDE, а помощью https://github.com/CheshireCaat/puppeteer-with-fingerprints.
Также есть способы совместить BAS(IDE) и api puppeteer в одном скрипте, но там костыль на костыле, не советую.
-
@biohacker01 said in Выполнять при каждой загрузке страницы в браузере:
А пока к сожалению я не нашел как запихать браузеры по контейнерам таким, чтоб они не открывались на всю подрят, и без headless
BAS сам запускает свои браузеры в headless(не видимом) режиме. А когда ты нажимаешь кнопку показать браузер - то он с помощью Windows API делает его видимым.
Я писал на этом форуме как-то, как можно управлять этим снаружи(скрывать и показывать браузер из BAS).
-
@sergerdn said in Выполнять при каждой загрузке страницы в браузере:
Из твоих постов в это ветке форума не понятно требования к реализации скрипта. Если скрипт пишется для себя(например), то я не вижу причин почему бы не рассмотреть вариант управлять браузером из BAS с помощью НЕ встроенной IDE, а помощью
А я не вижу причин - почему тебе не писать на го или ассемблере - там есть куча преимуществ...
Но ты почему то, по какой то тайной причине - тусуешься тут с нами.
Пиши хоть на раст - твой выбор. Но если ты пришел в тему обсуждения кубика баса из коробки - то фокус свой сосредоточь, на том, что речь о кубике из коробки ...
-
@DuckDuck said in Выполнять при каждой загрузке страницы в браузере:
А я не вижу причин - почему тебе не писать на го или ассемблере - там есть куча преимуществ...
Для каждой задачи своя реализация. На ассемблере не пишу, на Golang в последнее время пишу часто и много, так как задачи подходящие. Да и проще языка я еще не встречал, не совсем понимаю твое упоминание его в контексте задачи.
На Javascript многие пишут с этого форума, поэтому я его и упомянул. В том числе судя по постами и людям, которые отписали в этом топике.
@DuckDuck said in Выполнять при каждой загрузке страницы в браузере:
Но если ты пришел в тему обсуждения кубика баса из коробки - то фокус свой сосредоточь, на том что речь о кубике из коробки ...
Если лично ты ограничен реализацией(BAS IDE), то, может быть завтра человек, который столкнется с такой же задачей и он не будет ограничен рамками BAS IDE, прочитает инфу в этом топике и найдет готовое решение.
А, может быть, чем больше будет таких постов и комментариев в них - тем выше вероятность, что мы получим нужное в BAS из коробки.
-
@sergerdn если ты не понимаешь что такое контекст - то это лично твоя проблема, а твое резюме в теме про неправильно работающий кубик баса - никто не ждал ...
Ну сорян, я тебя блокировал, потом дал шанс, но ты не оставляешь мне выбора ...
