我正在尝试在网页上运行用JavaScript编写的IMacros宏,如下所示:
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)"
我已经使用this将JQuery加载到iMacros中,并将我的代码放在以下两者之间:
$(document).ready(function () {
//
});
但是,如果我使用JQuery,我会不断收到此错误:
TypeError: $ is not a function, line 28 (Error code: -991)
如果我仅使用JS,则会收到与以前相同的“未定义文档”错误。
所以我的问题是,我需要定义文档吗,我该怎么做?
最佳答案
我从来没有能够将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中,然后在stackexchage上的Firefox中运行。它将计算所有带有class =“question-hyperlink”的链接,并显示它们各自的文本-您可以在“播放(循环)”按钮下的绿色文本框中看到它。