繁体   English   中英

Chrome扩展程序:捕获到最新标签页的URL

[英]Chrome Extension: Capture URL of the newest tab opened

我的目的是捕获使用内容脚本打开的最新选项卡的URL。 仅当从与清单中指定的模式匹配的网页中打开新选项卡时,我才想捕获它的URL。

我的第一个方法是在content_script.js中使用此代码,因此它将在当前页面每次匹配模式时执行:

chrome.tabs.onCreated.addListener(function(tab) {
    /* tabs.onUpdated */
    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){ 
        status = changeInfo.status;
    });
    while (status != 'complete'){
        chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){ 
            status = changeInfo.status;
        });
    }
    /* At this point, url tab is complete so I can capture it*/
});

问题是content_script.js无法访问chrome.tabs对象。 然后我虽然该代码应该在background.js上 但是, background.js不知道当前网页何时与模式匹配。

有这样做的想法吗? 谢谢!

您可以在后台页面中捕获并记录chrome.tabs事件,然后通过onMessage将最新日志记录到内容脚本中。

如果只希望使用带有内容脚本的选项卡,则只需在初始化期间使用内容脚本中的postMessage并将该消息记录在后台页面中即可。

实际上,我尝试执行的操作是使用右键单击来检测何时打开新选项卡。 因此,我从content_script.js侦听node.oncontextmenu()事件。 我在那里叫chrome.runtime.sendMessage()将消息发送到background.js ,然后叫chrome.extension.onMessage.addListener()等待background.js警告“新标签页已打开”。

同时,自启用扩展后开始运行的background.js通过调用chrome.runtime.onMessage.addListener()侦听content_script.js消息。 然后它将侦听一个新选项卡打开,并在发生这种情况时告诉content_script.js

chrome.tabs.onCreated.addListener(function(tab) {
 chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
 chrome.tabs.sendMessage(tabs[0].id, {action: 'whatever'}, 
 function(response) {});  
 }); 
 });

我没有发布实际的代码,因为它太乱了,您会感到困惑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM