2011-10-05 91 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