Но появилась новая проблема. Иногда скрипт во время работы внезапно запрещает выделять действия. Т.е при клике на любое действие, оно просто не выделяется красным. Это второй баг, независимый от первого если что
Как из скрипта переименовать название браузера в веб интерфейсе?
-
Всем привет! Подскажите, пожалуйста, как из скрипта переименовать название браузера в веб интерфейсе? У меня запускается несколько браузеров одновременно (в разных функциях) и для каждого браузера нужно уникальное название (в соответствии функции которую он исполняет)

-
@invest193 said in Как из скрипта переименовать название браузера в веб интерфейсе?:
Всем привет! Подскажите, пожалуйста, как из скрипта переименовать название браузера в веб интерфейсе? У меня запускается несколько браузеров одновременно (в разных функциях) и для каждого браузера нужно уникальное название (в соответствии функции которую он исполняет)
Действие "Выполнить яваскрипт в веб интерфейсе" с кодом
document.querySelector('button[data-thread-number="' + ([[THREAD_INDEX]]-1) + '"]').querySelector('span.uk-text-middle ').innerText = "hello"переименует вкладку в "hello"

Но, что бы вкладка переименовалась, она должна быть видна на странице, то есть в интерфейсе должен быть открыта страница "Inspect browsers"

Ну и последний момент, так как эта страница генерируется, то вкладка вернётся в прежнее состояние

-
Проще всего хранить названия вкладок и подгружать при генерации страницы. Для этого нужно модифицировать функцию UpdateBrowsersIds() из подключаемого файла https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2



Вариант для самых ленивых:- Заменить подключаемый файл https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2 на https://community.bablosoft.com/assets/uploads/files/1657452513241-tabs_names_extensions.js

- Использовать в BAS действие "Выполнить яваскрипт в веб интерфейсе" с кодом:
window.tabs_names[ [[THREAD_INDEX]]-1 ] = { name:"Название" }Всё! Теперь вкладки будут всегда называться именно так, как вы их назвали

-
А как зайти в browser content viewer?
-
@xiniy22281 said in Как из скрипта переименовать название браузера в веб интерфейсе?:
А как зайти в browser content viewer?
на главной странице нажмите на кнопку "Inspect browsers"
-
@xiniy22281 said in Как из скрипта переименовать название браузера в веб интерфейсе?:
@Fox У меня почему-то отличается от того что у Вас
А причём здесь содержание страницы, которую загрузил браузер BAS в скрипте? Речь идёт о сгенерированном веб интерфейсе
https://wiki.bablosoft.com/web-interface/#/ -
@Fox Спасибо за идею но тут есть проблема после закрытия первых потоков.
Например:
Мы запустили 3 потока, в веб-интерфейсе и имеем BrowserIds = { 1 : 4659, 2 : 5495, 3 : 5400 } в самом скрипте THREAD_INDEX = 2,3,4 соотвественно, всё нормально.
Но как только у нас заканчивает роботу первый поток и создается новый, тут появляется проблема...
В веб-интерфейсе он получает ключ "1" который освободился в обьекте BrowserIds, а вот в скрипте THREAD_INDEX становится не 2 ( как ожидалось ) а 5! То есть он идёт на увеличение от значнения последнего созданного потока. В этот момент у нас полностью расходятся их идентификаторы и невозможно нормально получить tabs_name по нужному ThreadNumber.
Может есть идея как это можно решить? В идеале было бы знать значение BrowserId внутри бас скрипта, таким образом железно привязывать по этому идентификатору.
-
@centerdevs said in Как из скрипта переименовать название браузера в веб интерфейсе?:
@Fox Спасибо за идею но тут есть проблема после закрытия первых потоков.
Например:
Мы запустили 3 потока, в веб-интерфейсе и имеем BrowserIds = { 1 : 4659, 2 : 5495, 3 : 5400 } в самом скрипте THREAD_INDEX = 2,3,4 соотвественно, всё нормально.
Но как только у нас заканчивает роботу первый поток и создается новый, тут появляется проблема...
В веб-интерфейсе он получает ключ "1" который освободился в обьекте BrowserIds, а вот в скрипте THREAD_INDEX становится не 2 ( как ожидалось ) а 5! То есть он идёт на увеличение от значнения последнего созданного потока. В этот момент у нас полностью расходятся их идентификаторы и невозможно нормально получить tabs_name по нужному ThreadNumber.
Может есть идея как это можно решить? В идеале было бы знать значение BrowserId внутри бас скрипта, таким образом железно привязывать по этому идентификатору.
В чём собственно проблема то? При запуске потоков из веб интерфейса вы получаете их id и по ним можете выяснить всё что нужно: https://wiki.bablosoft.com/web-interface/#/callbasfunction?id=function-statistic
-
@Fox Работа устроена так что некоторые потоки запускаются из скрипта, и их нет в объекте который возвращает GetTasks.
А на счёт ID потока, часто бывает что в веб-интерфейсе у потока ID = 1, а в скрипте THREAD_INDEX = 5, ситуация описана выше. Получается что у меня нет точного идентификатора который имел бы одинаковое значение и там и там.
Если каким-то обазом получать BrowserId внутри скрипта - было бы идеально.
-
@centerdevs said in Как из скрипта переименовать название браузера в веб интерфейсе?:
@Fox Работа устроена так что некоторые потоки запускаются из скрипта, и их нет в объекте который возвращает GetTasks.
Так и было задумано, метод GetTasks() возвращает список функций запущенных из веб интерфейса, он не покажет потоки запущенные иначе.
А на счёт ID потока, часто бывает что в веб-интерфейсе у потока ID = 1, а в скрипте THREAD_INDEX = 5, ситуация описана выше. Получается что у меня нет точного идентификатора который имел бы одинаковое значение и там и там.
Какой смысл привязываться к номеру потока в принципе? Если вы создаёте потоки из скрипта, вы не получите к нему доступ через GetTasks(). Что бы открыть браузер вызванного потока, вам нужно будет прослушивать событие "browser_add" что бы в нём получить id браузера
Создавайте все потоки из веб интерфейса, зачем создавать потоки из скрипта?
Если каким-то обазом получать BrowserId внутри скрипта - было бы идеально.
Чисто технически вы можете прослушивать событие "browser_add" и сохранять данные в объекте в веб интерфейсе. Удобнее всего было бы использовать ключ
номер потока, а значениеid браузера. Так как получить данные из интерфейса внутри потока во время его работы возможно только через глобальную переменную, то при получении данных от события их можно дублировать в глобальную переменнуюApi.SetEventHandler(async function (EventType, EventData) { if (EventType == "browser_add") { var obj = await Api.GetGlobalVariable("OBJ") if(obj == "") obj = {}; obj[EventData.thread_number] = EventData.browser_id; await Api.SetGlobalVariable("OBJ", obj); }
Тестовый скрипт: 2588.xml
