在页面提交上使用settimeout方法

时间:2012-11-01 09:21:06

标签: javascript firefox javascript-events settimeout page-refresh

我需要获取网站中可用的列表项,列出分页样式中的项目。我将在每个页面上提取项目的信息。我使用settimeout(function(){... code ...},5000)编写了一个javascript代码,并在firefox Web控制台中运行此代码。该脚本获取页面中的所有项目,一旦完成,脚本通过执行超链接“next”的click()方法提交页面。这将继续,直到页面在页面中具有“下一步”超链接(在最后一页仅“后退”超链接,如果存在)。在每个页面提交我超时它为5秒。 我在firefox webconsole中执行了这段代码,这次成功运行并获取第一页结果,然后提交页面,下一页也加载了。但是,问题是,一旦提交页面,脚本就会停止。如何在下一页加载后连续运行此脚本?有没有其他方法来实现此功能?


    var inc=0;
    var ids;
    var main=function(){
    console.log("attempiting..............."+inc);
    var i=0;
    {
    ids[inc]=b();//function, fetch the items from the page
    console.log(ids);
    var more=document.getElementById("m_more_item");
    if(more){
    //next link is there
    var cli=more.getElementsByTagName("a");
    console.log("navigating to next page "+cli[0]);
    inc++;
    setTimeout(main,5000); //I tried placing this after click, but didnt work!
    cli[0].click(); //submitting...
    } else {
    //last page reached, exiting...
    console.log("exit1-> total items fetched are: "+ids);
    return ids;
    }
    }
    };
    main();

问候 V

1 个答案:

答案 0 :(得分:0)

setTimeout调用使你的函数递归,并保持循环,这应该工作。

setTimeout(cli[0].click, 5000);

干杯。

编辑: 评论很长,所以我将其添加为答案。

你可以在分离的页面中使用AJAX调用首先用AJAX调用页面,使用start = 1,并且在此请求成功时解析数据并根据需要收集信息,并且不要忘记为下一个请求保留lastItemIndex并发布第二次AJAX调用成功时,另一个AJAX调用需要的信息,首先是start = lastItemIndex + 1。

这些调用应该做你想要的。

我建议使用jQuery,因为调用AJAX和解析响应很容易。