видимо проблема сейчас после if в двигать мышь и кликнуть на элемент
var data = {fail:false,wait:true};data["scroll"] = "no scroll" == "scroll";data["threshold"] = parseInt(80);data["timeout"] = 5000;data["data"] = "iVBORw0KGgoAAAANSUhEUgAAAMEAAAAeBAMAAABnBGdVAAAALVBMVEUAWv/V5P////+cv/9Chf+Qt/+81P/k7v+Crv/y9/+nxv/5+/9dlv/F2f9zpf8aFseGAAABB0lEQVR4Ae2SsUoDQRCG58ixbHHFXhCsHcHG5kilaJFG5j1EMIepwqFgtYWNbGWEEGGtfQBBzm4LC/MkvoazupWphEkT9msGrvi/m38HMpnMfxg2a5/O0qxVJyDQT2sp5bWoQd32GzbQdAHl7NAqPABCr5+xJ+Rgh3tChhN7OaZO+SvrThfQfr6H9oN3qB5h1MgYanDNvf1pZtABTV6BLn5bWskY+F/JHIc4QSHiZAnFTjSUM5QxxFSfDAXn6WSo5kZoBzKg31JLyrMhtTTw3J6IIYbffBm9bANNH8Ad8UuHmg19NZcx7I75nO7Sta5wn6/Vw4iXOccXI3NLf+B32DDbYMhktphvXodGRgltnEgAAAAASUVORK5CYII=";_wait_image(data)!
_if(typeof _Idle != "undefined", function(){
_Idle.emulate({useGeneral: true, target: _image()})!
})!
_if_else(typeof _Idle != "undefined" && _Idle.additionalEmulationEnabled(), function(){
_Idle.moveAndClickOn(_image(),{holdCtrl: false, clickType: "left", wait: false, moveSettings: {} })!
}, function(){
_image().random_point()!
_if(_result().length > 0, function(){
move( {} )!
_image().clarify(X,Y)!
_call(_clarify, {} )!
mouse(X,Y)!
})!
})!
Есть ли мастера JavaScript'а? Виснет код.
-
Выполняю код в BAS с помощью "Выполнить код", а он в 90% случаев виснет на данном участке кода.
Код генерации логина. Логика кода:
- Берется имя и фамилия (пример: Александра Попова). Меняется на нижний регистр (александра попова). Применяется транслитерация (aleksandra popova). - Переменные "englishFirstName" и "englishLastName"
- Генерируется случайная длина и случайный текст (Пример: nsfd). - Переменная "randomText"
- Генерируется случайная длина и случайные цифры (Пример: 324). - Переменная "randomNumber"
- Всё это склеивается в логин (Пример: aleksandrapopovansfd324). - Переменная "[[USER_LOGIN]]"
var [[USER_LOGIN]] function englishStringConverter(string) { //Функция транслитерации (Из русских букв - в английские) string = string.toLowerCase() for (var i = 0; i < string.length; i++) { var englishChar = [[GENERATOR_ENGLISHCHARS]][string[i]] //GENERATOR_ENGLISHCHARS - объект вида {в: 'v', г: 'g'} со всеми буквами string = string.replace(string[i], englishChar) } return string } var englishFirstName = englishStringConverter([[USER_FIRSTNAME]]) //Имя английскими буквами var englishLastName = englishStringConverter([[USER_LASTNAME]]) //Фамилия английскими буквами var randomText = '' //Случайный текст var minTextLength = 3 var maxTextLength = 4 var randomTextLength = Math.floor(Math.random() * (maxTextLength - minTextLength + 1) + minTextLength) for (var i = 0; i < randomTextLength; i++) { randomText += [[GENERATOR_LOWERCASE]][Math.floor(Math.random() * [[GENERATOR_LOWERCASE]].length)] } var randomNumber = '' //Случайные числа var minNumberLength = 1 var maxNumberLength = 2 var randomNumberLength = Math.floor(Math.random() * (maxNumberLength - minNumberLength + 1) + minNumberLength) for (var i = 0; i < randomNumberLength; i++) { randomNumber += [[GENERATOR_NUMBERS]][Math.floor(Math.random() * [[GENERATOR_NUMBERS]].length)] } [[USER_LOGIN]] = englishFirstName + englishLastName + randomText + String(randomNumber) //Готовый логинПочему виснет не понимаю. Может метод replace затратный, может циклов много... Уже всю голову сломал.
Генерирует отлично, но зависает еще лучше. -
@SecDeveloper said in Есть ли мастера JavaScript'а? Виснет код.:
var englishChar = [[GENERATOR_ENGLISHCHARS]][string[i]] //GENERATOR_ENGLISHCHARS - объект вида {в: 'v', г: 'g'} со всеми буквами
string = string.replace(string[i], englishChar)Ошибка тут
var englishChar = [[GENERATOR_ENGLISHCHARS]][string[i]] //GENERATOR_ENGLISHCHARS - объект вида {в: 'v', г: 'g'} со всеми буквами string = string.replace(string[i], englishChar)Если в словаре нет соответствия, тогда будет замена на undefined и строка может расти бесконечно.
И кстати вместо replace можно просто менять букву по индексуstring[i] = 'a'Вообще это можно было легко найти, достаточно тестироровать код частями, и добавить логи
-
@UserTrue И правда! До конца не понял, почему замена с replace иногда не могла найти соответствующую букву, ибо весь алфавит в словаре указан и undefined появляться не должно, но уже и понимать не нужно.
Превратил в массив, поменял буквы по индексу, превратил в строку. Теперь работает норм!function englishStringConverter(string) { string = string.toLowerCase().split('') for (var i = 0; i < string.length; i++) { var englishChar = VAR_GENERATOR_ENGLISHCHARS[string[i]] string[i] = englishChar } string = string.join('') return string }Спасибо.
-
@SecDeveloper дело не в replace, а в том, что если в словаре по указанному ключу не будет соответствия то вернётся undefined
-
@UserTrue Только сейчас понял: я заменял "ь" и "ъ" пустотой "". Потом длина строки уменьшалась, а цикл прежней длины и ищет, к примеру, индекс 9, когда в строке уже 8 индексов из-за стертого мягкого знака. Поэтому ищет по пустому ключу. И соответствия нет.
А если я в массиве по индексам меняю, то порядок и длина массива никак не поменяется и всё успешно заменится.Консоль логом пытался отловить, но у меня либо все буквы показывались и норм генерировалось, либо просто всё зависало и ни один консоль лог не показывался.
Вы мне очень помогли.
-
@SecDeveloper для отладки можно было в цикл добавить break, что при достижение какого-то числа итерациий вырубало