Полезная информация

Общайтесь со знакомыми и друзьями в нашей группе в Контакте.

№117-02-2018 13:45:33

S1m0n
Участник
 
Группа: Members
Зарегистрирован: 02-02-2018
Сообщений: 3
UA: Chrome 64.0

[РЕШЕНО] Игнорировать ошибку в js

Допустим есть такой код.

скрытый текст

Выделить код

Код:

for (i = 0; i < arr.length ; i++)
    var k = arr[i].querySelectorAll(".special")[0].textContent;


При i = 0, 1, 2 код выполнятся не должен. То есть, я рассчитываю на то, что  сработает код при значении
скрытый текст

Выделить код

Код:

arr[3].querySelectorAll(".special")[0].textContent


Это число "3" всегда разное.
Проблема в том, что работа скрипта останавливается, так как
скрытый текст

Выделить код

Код:

arr[0].querySelectorAll(".special")[0].textContent


не существует и соответственно получаю ошибку в imacros:

TypeError: arr.querySelectorAll(...)[0] is undefined, line ... (Error code: -991)

При этом, код работает, когда условия сайта подстраиваются под

скрытый текст

Выделить код

Код:

arr[0].querySelectorAll(".special")[0].textContent


и код работает верно пока i не дойдет до момента когда элемента не существует.
Я нашел информацию, что можно воспользоватся:
1)
скрытый текст

Выделить код

Код:

try{ //code that causes an error }catch(e){ functionToHandleError(e); } //continue from here


2)
скрытый текст

Выделить код

Код:

window.onerror = function(){ return true; }


Но это было безуспешно.

код публикуется в тегах code под спойлером
замечание


[i]InfSub

Отредактировано S1m0n (17-02-2018 14:15:24)

Отсутствует

 

№217-02-2018 14:42:23

S1m0n
Участник
 
Группа: Members
Зарегистрирован: 02-02-2018
Сообщений: 3
UA: Chrome 64.0

Re: [РЕШЕНО] Игнорировать ошибку в js

Пытался добавить проверку в цикл, но всё равно ошибка.

скрытый текст

Выделить код

Код:

if(arr[i].querySelectorAll(".special")[0].textContent)
    {...}
else i++;


код публикуется в тегах code под спойлером

InfSub

Отредактировано S1m0n (17-02-2018 14:42:48)

Отсутствует

 

№317-02-2018 21:48:05

Squatter
Участник
 
Группа: Members
Зарегистрирован: 11-05-2017
Сообщений: 54
UA: Chrome 63.0

Re: [РЕШЕНО] Игнорировать ошибку в js

Логично пару проверок сделать. Как вариант, так

скрытый текст

Выделить код

Код:

    var arr = content.document.querySelectorAll("selector");
    if (arr.length === 0) { alert("Найдено эл-ов = " + arr.length); }//На случай если массив пуст
for (i=0;i<arr.length;i++) {
    var parse = arr[i].querySelectorAll(".special");
    if (parse.length === 0) {
        alert(parse);//Если не найдёт эл-ов с классом special
    } else {
        alert(parse[0].textContent);//Если найдёт эл-ты с классом special применяем .textContent
    }
}


В противном случае юзать
try{...}
catch(e){...}


или вообще менять подход

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]