我正在为一些东西制作机器人,这是为了进入下一个页面'一个文件并搜索一个字符串,并重复此操作,直到找到该字符串。在搜索字符串方面一切正常,但它只导航到下一页(因此它只会转到online.php?page = 2.我相信这是因为iframe.contentWindow.load只触发一次,在第一次运行代码。所以当它移动到新页面时,它不会继续。
有什么想法吗?
document.body.innerHTML = '' //Out with the old
var iframe = document.createElement('iframe');
var increm = 1
iframe.src = 'online.php?page=' + parseInt(increm)
iframe.style.height= '3000px'
iframe.style.width = '100%'
document.body.appendChild(iframe); //In with the new
$( iframe.contentWindow ).load(function() { //Once EVERYTHING has loaded
runcode()
});
function runcode(){
whole = iframe.contentWindow.document.body.innerText
var sub = "StringToSearchFor";
if(whole.indexOf(sub) > -1){ //If the string is found on the page
console.log('The string has been found on this page')
}else{ //Otherwise
increm = increm+1
iframe.src = 'online.php?page=' + parseInt(increm); //Move to the next page
$( iframe.contentWindow ).load(function() { //rinse
runcode() //repeat
});
}
}
答案 0 :(得分:1)
你有2个加载处理程序,其中一个在你的函数中,再次调用runcode()。
您只需要1,但不要将其附加到更改的内容上。删除内容意味着删除处理程所以,做:
$( iframe ).load(function() { runcode() });
OR
$( iframe ).on("load", function() { runcode() });
OR
$( iframe ).on("load", ".newchilddiv", function() { runcode() });
编辑:还有innerText导致错误
whole = iframe.contentWindow.document.body.innerText