我的代码:
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);
这不起作用,但我不知道为什么。
答案 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() {
}