Я развиваю свой первый Greasemonkey скрипт (пытается редактировать и добавлять содержимое страницы конкретного сайта) и по какой-то причине, он отказывается работать за один while
цикла .. Например:Loops в GreaseMonkey
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++;
}
Что-нибудь после этого цикла кончится, отказывается работать. Даже простой alert
, похоже, не выполняется. У меня есть еще одна петля while
с аналогичной структурой, и если я сначала поставлю ее, она будет выполнена, а этого нет. Есть идеи ? Заранее спасибо !
Вы пытались помещать некоторые предупреждения в свой цикл, чтобы увидеть, в какой момент это не удается? извини, я бы догадался о exec. –
также, возможно, попробуйте с Firefox и используйте консоль ошибок, если только Chrome не имеет то же самое. –
Почему вы получаете привязывающие метки дважды? Просто используйте 'var anchorTagNumber = anchorTag.length', чтобы сделать его более эффективным. И выяснить, что проблема может добавить 'console.log (i, anchorTagNumber)' в цикл while. – 2010-11-05 09:02:09