0

我是 Javascript 新手。我正在尝试导航到页面并“抓取”屏幕。我正在使用 Firefox、Greasemonkey 和 Firebug。我正在尝试使用 location.href,这可能是问题所在。我想导航到一个页面,解析内容,使用内容导航到其他页面。这是一个示例(我的站点不同,但我得到相同的错误/结果):

location.href='http://www.w3schools.com/html/html_examples.asp';
/* parse and find text */
location.href='http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro';
alert('finished');

无论我做什么,Firebug/Greasemonkey 都会在第一个 location.href 之后退出。警报会显示,但即​​使我在那里设置了断点,它也会运行通过它。任何帮助深表感谢。

4

1 回答 1

0

场景一:大量动态生成的链接(使用GM_xmlhttpRequest获取)

//...
//@include http://www.w3schools.com/html/html_examples.asp
//@grant   GM_xmlhttpRequest
//...

var urls = [];
//parse text to generate some links on the fly and store them in urls[]
var i = 0, numUrls = urls.length, reportEntries = [], count = 0;
for(; i < numUrls; i++) {
    GM_xmlhttpRequest({
        method: 'GET', 
        url: urls[i], 
        onload: function(response) {
            var returnedHtml = response.responseText;
            //extract more information from returnedHtml and store it in reportEntries[i]
            if(++count >= numUrls) {
                //print reportEntries[] to form a report
                alert('finished');
            }
        }
    })
}

注意:如果您需要将报告作为文本文件保存到本地磁盘,Greasemonkey 不是一个可行的选择,因为它没有打开本地文件的权限。尽管如此,您仍可以将其保存到 pastebin.com 等在线存储中。

场景 2:静态链接数量有限

//...
//@include  http://some.landing/page
//@include  http://www.w3schools.com/html/html_examples.asp
//@include  http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro
//...
if('http://some.landing/page' == location.href) {
    location.href = 'http://www.w3schools.com/html/html_examples.asp';
}
else if('http://www.w3schools.com/html/html_examples.asp' == location.href) {
    /* parse and find text */
    location.href='http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro';
}
else if('http://www.w3schools.com/html/tryit.asp?filename=tryhtml_intro' == location.href) {
    alert('finished');
}
于 2013-10-26T11:19:26.513 回答