我在获取标签的标签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知道我是不是很清楚。
答案 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;
});