@palnamalina said in Как включить пересылку в Gmail?:
Актуально
https://community.bablosoft.com/topic/24964/bas-не-открывает-всплывающую-диалоговую-страницу/28
Всем привет! Подскажите, пожалуйста, как из скрипта переименовать название браузера в веб интерфейсе? У меня запускается несколько браузеров одновременно (в разных функциях) и для каждого браузера нужно уникальное название (в соответствии функции которую он исполняет)

@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



Вариант для самых ленивых:

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