在我的Google Chrome扩展程序的popup.js
中,我有:
function sendWebResponse(hash) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "http://localhost:3000/tasks/4123434/from_chrome");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.setRequestHeader("Accept", "application/json");
xmlhttp.setRequestHeader('Authorization', 'Token token=463c121664d98a6dafd1086e8d0ecca0');
xmlhttp.send(JSON.stringify(hash));
}
function grabCurrentUrl(url) {
chrome.tabs.query(
{'active': true, 'lastFocusedWindow': true},
function (tabs) {
var url = tabs[0].url;
return url;
}
)};
以下作品:
function submitTrue(id) {
sendWebResponse({"survey": id,"result": "true");
}
但以下情况并非如此:
function submitTrue(id) {
var url = grabCurrentUrl();
sendWebResponse({"survey": id,"result": "true", "url": url});
}
在这种情况下,url
为null
。当我这样做时肯定有一个活动标签。
为什么grabCurrentURL()
没有抓取有效标签的当前网址?
答案 0 :(得分:0)
所以他们都说它是异步的。您可以将getCurrentUrl更改为:
function getCurrentUrl(callback) {
chrome.tabs.query({ active: true, lastFocusedWindow: true }, function (tabs) {
if (tabs.length > 0) {
callback(tabs[0].url);
}
return null;
});
}
然后将submitTrue更改为:
function submitTrue(id) {
getCurrentUrl(function(url) {
sendWebResponse({"survey": id,"result": "true", "url": url});
});
}