在Chrome扩展程序中获取标签ID时出现问题

时间:2011-01-28 08:32:37

标签: google-chrome google-chrome-extension

我在获取标签的标签ID并在其他标签中使用时遇到问题。

有一个标签打开(google.com)我在google.com上使用我的内容脚本放置了一个按钮。 当点击url为“cricinfo.com”时,Button应创建一个标签。 的 contentscript.js

$(body).prepend('(Open up)

</button><textarea id="followup_text"></textarea>');


chrome.extension.sendRequest({"acturl":'http://cricinfo.com',"type":""});   

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {
    if(request.greeting=="hello")
{
 alert(sender.tab.url); 
sendresponse({farwell:"thanks"});
} 
else
sendresponse({farwell:"not recieved"});
});

}); 

Background.html

<script type="text/javascript" charset="utf-8">


       chrome.extension.onRequest.addListener(
        function(request, sender, sendResponse) {  

       chrome.tabs.create({"url":request.acturl,"selected":false},function(tab){

       });  

    });   
    chrome.tabs.getSelected(null, function(tab){ 
        chrome.extension.sendRequest(tab.id, {greeting:"hello"},function(response){console.log(response.farwell);}); 
    }
    })

</script>   

现在cricinfo.com重定向到“espncricinfo.com”,所以我希望这个网址显示在我的原始标签中(例如google.com)并将其显示在textarea#follow_text中。

要执行此操作,我需要google.com的tabID,以便在espncricinfo.com上发送来自background.html的请求。扩展不允许在内容脚本中使用选项卡。我无法在background.html上使用它。

感谢。 Lemme知道我是不是很清楚。

1 个答案:

答案 0 :(得分:2)

嗯,这是一些代码,但它是一种不稳定的解决方案。诀窍在于,当您收听chrome.tabs.onUpdated时,它已经收到重定向的网址(如果没有重定向,则会收到直接网址)。

var createdTabId = 0;
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if(tabId == createdTabId && changeInfo.status == "loading") {
        createdTabId = 0;

        //tab.url contains redirected or direct url, send it to google tab
        var tabUrl = tab.url;
        chrome.tabs.getSelected(null, function(tab){ 
            chrome.tabs.sendRequest(tab.id, {tabUrl: tabUrl}); 
        });

    }
});

chrome.tabs.create({"url":"http://cricinfo.com","selected":false},function(tab){
    createdTabId = tab.id;
});