脚本无法打开正确的链接

时间:2010-11-10 23:02:37

标签: javascript google-chrome-extension

我的代码:

var link;
var wid;
chrome.tabs.getSelected(null,function(tab) {
    link = tab.url;
});
http.open('get', 'http://surfkid.redio.de/linki.php?site_url='+link);
function insertReply() {

}
http.onreadystatechange = insertReply();
http.send(null);

这不起作用,但我不知道为什么。

1 个答案:

答案 0 :(得分:1)

您忘记发起XMLHttpRequest的实例:

var http = new XMLHttpRequest();

您需要使用encodeURIComponent来正确编码查询参数:

http.open('get', 'http://surfkid.redio.de/linki.php?site_url='+encodeURIComponent(link));

您想要将事件监听器附加到http.onreadystatechange,但实际上您正在调用insertReply并设置其返回值。摆脱这些括号:

http.onreadystatechange = insertReply;

UPDATE: chrome.tabs.getSelected异步工作,因此在执行该函数后访问link时,它可能仍为undefined(另请参阅How can I get the URL for a Google Chrome tab?将代码放在回调处理程序中。完整的脚本:

var wid,
    http = new XMLHttpRequest();

chrome.tabs.getSelected(null,function(tab) {
    http.open('get', 'http://surfkid.redio.de/linki.php?site_url=' + encodeURIComponent(tab.url));
    http.onreadystatechange = insertReply;
    http.send(null);
});

function insertReply() {

}