2011-06-26 84 views
1

我写了一段代码,每隔2秒后提醒标签URL。但是,我无法为弹出窗口执行此操作。每当我打开一个弹出窗口;标签网址是背景页面,而不是弹出窗口。获取Chrome弹出式窗口的URL

我怎样才能得到在crome弹出的网址?

<script> 
var seconds = 2*1000; 
setInterval(function(){ 
    chrome.tabs.getSelected(null, function(tab) { 
     tabId = tab.id; 
     tabUrl = tab.url; 
     alert(tabUrl); 
}); 
},seconds); 
</script> 
</head> 
+1

你说的是哪弹出 - 扩展的弹出窗口或弹出窗口? – serg

+0

我的意思是弹出式窗口 – user782400

回答

0

在content_script.js或popup.html:

function get_urlInfo() { 
    var d = { 
     'action' : 'getUrl' 
    }; 

    chrome.extension.sendRequest(d, function(response) { 
     alert(response.url); 
    }); 
}; 

在background.html:

function onRequest(request, sender, sendResponse) { 
    if (request.action == 'getUrl') { 
     sendResponse({'url' : sender.tab.url});      
    } 
}; 

chrome.extension.onRequest.addListener(onRequest); 

它应该工作!

+0

不应该有一个点击监听器?因为现在,当我点击链接时,它显示没有提示 – user782400

+0

编号在你的setTimeout函数中调用get_urlInfo()。 – user278064

1

当通过null代替windowIdchrome.tabs.getSelected(),则默认为“当前”的窗口,这是没有必要的所选择的一个,作为解释here

当前窗口是包含代码的窗口目前正在执行。认识到这一点很重要,它可能与最顶层或关注的窗口不同。

所以,你需要先找到重点窗口,然后获取其选中的标签:

var seconds = 2*1000; 
setInterval(function(){ 
    chrome.windows.getLastFocused(function(window) { 
     chrome.tabs.getSelected(window.id, function(tab) { 
      tabId = tab.id; 
      tabUrl = tab.url; 
      alert(tabUrl); 
     }); 
    }); 
},seconds);