【发布时间】:2014-08-07 20:37:22
【问题描述】:
我正在尝试构建一个 Google 查询字符串,向该页面发出请求,抓取 HTML,然后在 Chrome 扩展程序(即 JavaScript)中对其进行解析。所以我有以下代码:
var url = "https://www.google.com/search?#q=" + artist + "+" + title;
searchGoogleSampleInformation(url);
function searchGoogleSampleInformation(url)
{
var xhr = new XMLHttpRequest();
xhr.open("GET", url, false);
xhr.onreadystatechange = function ()
{
if (xhr.readyState == 4)
{
return parseGoogleInformation(xhr.responseText, url);
}
}
xhr.send();
}
function parseGoogleInformation(search_results, url)
{
var link = $(".srg li.g:eq(0) .r a", search_results).attr('href');
}
parse 方法只是获取第一个搜索结果的 url(我不想这样做,只是为了测试 HTTP 请求是否正常工作)。但是link 在该行之后是undefined。然后我使用alert(url) 并验证我的查询字符串构建正确;我从警报窗口复制它并粘贴到另一个选项卡中,它按预期提取了结果。然后我用search_results打开了一个新窗口,它似乎是谷歌的常规主页,根本没有搜索。我认为这个问题可能是由于xhr.open 调用的异步性而发生的,但是翻转也没有帮助。我错过了什么明显的东西吗?
【问题讨论】:
标签: javascript google-chrome-extension xmlhttprequest