每次iframe重新导航时执行操作。 (JavaScript的)

时间:2016-03-08 18:21:25

标签: javascript jquery iframe

我正在为一些东西制作机器人,这是为了进入下一个页面'一个文件并搜索一个字符串,并重复此操作,直到找到该字符串。在搜索字符串方面一切正常,但它只导航到下一页(因此它只会转到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
        });
    }
}

1 个答案:

答案 0 :(得分:1)

你有2个加载处理程序,其中一个在你的函数中,再次调用runco​​de()。

您只需要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