Проблема с получением идентификатора вкладки в расширении Chrome - PullRequest
0 голосов
/ 28 января 2011

У меня проблема с получением идентификатора вкладки и использованием его на другой вкладке.

Открыта одна вкладка (google.com). Я разместил кнопку на google.com, используя мойконтентный скрипт.Кнопка должна создавать вкладку при нажатии с URL-адресом как «cricinfo.com». contentscript.js

$ (тело) .prepend ('(открыть)

</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», поэтому я хочу, чтобы этот URL отображался на моей исходной вкладке (то есть на google.com) и отображался в текстовом поле # follow_text.

Для этого мне нужен tabID google.com для отправки запроса из background.html, когда он находится на espncricinfo.com. Расширения не позволяют использовать вкладки в надписях содержимого. Я не могу использовать его в background.html.

Спасибо. Дай мне знать, если я не ясен.

1 Ответ

2 голосов
/ 28 января 2011

Ну, вот код, но это довольно шаткое решение. Хитрость в том, что когда вы слушаете chrome.tabs.onUpdated, он уже получает перенаправленный URL-адрес (а если не было перенаправления, он получает прямой URL-адрес).

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;
});  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...