2011-10-05 191 views
2

我有以下代码片段,问题在于chrome.tabs.getSelected的回调是在用空url发送的请求之后评估的。我该如何解决这个问题?JavaScript + Chrome标签页Api - 无法获取标签页的URL

function send() { 
var url = ''; 
chrome.tabs.getSelected(null, function(tab) { 
    url = tab.url; 
}); 

var client = new XMLHttpRequest(); 
client.onreadystatechange = function() { 
    if(this.readyState == 4) { 
     alert(this.status); 
    } 
} 
client.open("POST", "http://myurl"); 
client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); 

client.send(url); 
} 

回答

6

欢迎异步编程

function send() { 
    chrome.tabs.getSelected(null, function(tab) { 
     var client = new XMLHttpRequest(); 
     client.onreadystatechange = function() { 
      if(this.readyState == 4) { 
       alert(this.status); 
      } 
     } 
     client.open("POST", "http://myurl"); 
     client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); 

     client.send(tab.url); 
    }); 
} 
+0

现在我明白了。谢谢 – user219882

+0

我还有一个问题。是否有可能获得标签的源代码?我想发送URL,整个页面的HTML代码和代码片段(用户选择一些文本,并在请求中发送)。 – user219882

+0

是的。既然你有了tabId,你可以对它执行一些脚本并做你想做的任何事情。 http://code.google.com/chrome/extensions/dev/tabs.html#method-executeScript – cvsguimaraes