GreaseMonkey 中的循环
我正在开发我的第一个 Greasemonkey 脚本(尝试编辑页面内容并将其添加到特定网站),并且由于某种原因,它拒绝在一个 while
循环之外工作。例如:
var anchorTag = window.document.getElementsByTagName('a');
var anchorTagNumber = window.document.getElementsByTagName('a').length;
..
..
i = 0
j = 0;
function collectId(i,link) {
linkArray[j] = new Array(2);
linkArray[j][0] = i;
linkArray[j][1] = link;
j++;
}
while(i <= anchorTagNumber)
{
testHref = anchorTag[i].href;
testHTML = anchorTag[i].innerHTML;
patHref = /some regex/;
patCaptureId = /some regex/;
testId = patCaptureId.exec(testHref);
patHTML = /some regex/;
patHTML2 = /some regex/;
patHTML3 = /some regex/;
if(patHref.test(testHref) && !patHTML.test(testHTML) && !patHTML2.test(testHTML))
{
linkId = testId[1];
collectId(i,linkId);
}
i++;
}
此 while 循环之后的任何内容结束,拒绝工作。即使是一个简单的警报似乎也无法执行。我有另一个具有类似结构的 while
循环,如果我把它放在第一位,它就会执行,而这个则不会。有什么想法吗?提前致谢 !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最明显的问题是数组溢出,这将导致脚本出错。
这个:
while(i <=anchorTagNumber)
应该是:
while(i。
例如,如果数组的长度为 5,则其最后一个元素的索引将为 4。
另外,这样:
可以简化为:
这将稍微加快代码速度,但也使未来的代码维护或重用更加容易。
The most obvious problem is that the array is being overrun, which will cause the script to error-out.
This:
while(i <= anchorTagNumber)
Should be:
while(i < anchorTagNumber)
.If an array has length 5, for example, its last element will have an index of 4.
Also, this:
Can be simplified to:
That will speed the code slightly but also makes future code maintenance, or reuse, easier.
您可以尝试使用 setInterval 每 100 毫秒调用一次函数,而不是使用 while。
Instead of using a while, you could try a setInterval to call you function every 100 miliseconds.