Документ не определен Javascript с IMacros

Я пытаюсь запустить макрос IMacros, написанный на javascript, на веб-странице, например:

for (var i = 1; i < 18; i++) {
   document.querySelector(".foo table > tbody > tr:nth-child(" + i + ") > .goo:nth-child(2) > a").click();
   document.querySelector(".foo > a").click();

if (i % 17===0) {
    alert('Reset i');
    i = 1;
    }
}

В консоли js все работает нормально, но когда я запускаю макрос, я получаю:

"ReferenceError: document is not defined, line 2 (Error code: -991)"

Я загрузил JQuery в iMacros с помощью этого, и поместите мой код между:

$(document).ready(function () {
    //
}); 

Но я продолжаю получать эту ошибку, если использую JQuery:

TypeError: $ is not a function, line 28 (Error code: -991)

И если я использую только JS, я получаю ту же ошибку «документ не определен», что и раньше.

Итак, мой вопрос: нужно ли мне определять документ и как мне это сделать?


person Andratwiro    schedule 10.06.2014    source источник
comment
попробуйте jQuery вместо $   -  person Mohit Kumar    schedule 10.06.2014
comment
Попробуйте и дайте нам знать. Я немного поэкспериментировал с функцией, которую вы поместили под это, и это действительно не сработало.   -  person macroscripts    schedule 10.06.2014
comment
@MohitArora По-прежнему возникает та же ошибка: либо JQuery не является функцией (если заменить $ для JQuery), либо документ не определен. Не могли бы Вы уточнить?   -  person Andratwiro    schedule 10.06.2014
comment
@macroscripts У меня работает, если вы замените последний URL-адрес на spprofessionals.blob.core.windows.net/share/jquery-2.0.3.min.js, так как ссылка в приведенном коде не работает.   -  person Andratwiro    schedule 10.06.2014
comment
Так что замена $ на jQuery будет работать? И любой код jQuery будет работать, когда он выполняется с помощью iMacros?   -  person macroscripts    schedule 10.06.2014
comment
Нет, в конце концов это не так, я использовал решение флеша   -  person Andratwiro    schedule 11.06.2014


Ответы (1)


Мне никогда не удавалось загрузить jQuery в скрипт imacros, но, в конце концов, это не такая уж большая проблема. Чтобы получить доступ к DOM, вам нужно ссылаться на каждый элемент как: window.content.document.getElementsByClassName('foo') например. Это даст вам массив, поэтому обязательно выберите каждый из элементов в массиве, который вам нужен:

var foo_class = window.content.document.getElementsByClassName('foo');

for (i=0;i<foo_class.length;i++){
//do something
}

Надеюсь, поможет

РЕДАКТИРОВАТЬ, чтобы добавить рабочий пример:

var links = window.content.document.getElementsByClassName('question-hyperlink');
var list=[]
for (i=0;i<links.length;i++){ 
txt=links[i].innerHTML;
list.push(txt);
}
number=links.length;
linkstexts=list.toString();
showme="number of links with class=question-hyperlink: "+number+"       text links with class=question-hyperlink: "+linkstexts;

iimDisplay((showme))

Скопируйте код в macro.js и запустите его в firefox на stackexchage. Он подсчитает все ссылки с class="question-hyperlink" и отобразит их соответствующий текст - вы можете увидеть его в зеленом текстовом поле под кнопкой Play(Loop).

person flish    schedule 10.06.2014
comment
Что вы используете для запуска этого кода? Консоль FireBug? - person macroscripts; 10.06.2014
comment
нет, скрипт .js запускается непосредственно в imacros для firefox. Я сейчас не за компьютером, и там, где я живу, довольно поздно, но завтра я опубликую рабочий скрипт, который считает ссылки или что-то в этом роде. - person flish; 11.06.2014