从Chrome扩展程序收听页面更改

时间:2015-11-11 11:10:37

标签: javascript google-chrome google-chrome-extension tabs

我正在构建一个Chrome扩展程序来跟踪用户花费的时间来说http://example.com。因此,基本上当用户更改为具有不同URL的另一个选项卡时,它会停止计时器,当她返回第一个选项卡或当她将当前选项卡的URL更改为http://example.com时,计时器将重新启动。

问题是:如何以尽可能少的权限执行此操作

以下是我的想法:

1。使用chrome.tabs.onUpdatedchrome.tabs.onActivated
每次选项卡获取更新或用户更改选项卡时,我都会检查该网址是否与http://example.com匹配。如果是,那么我将new Date()保存在变量中,每当网址再次更改时,我会从新new Date()中减去该变量。

2。内容脚本?
我仅在http://example.com上插入内容脚本,该脚本会向当前new Date()的background.js发送消息。我甚至不相信这个想法,但也许这个脚本可以以某种方式检测标签何时不活动?并向background.js发送另一条消息。

第3。使用webNavigation
这是我最好的选择。我有以下代码,但我不明白为什么它不起作用。

function onWebNav(details) {
    console.log(details)
}
var filter = {
    url: [{
        hostSuffix: 'example.com'
    }]
};

chrome.webNavigation.onCommitted.addListener(onWebNav, filter);
chrome.webNavigation.onHistoryStateUpdated.addListener(onWebNav, filter);

导航到http://example.com时,扩展程序控制台中没有输出。

4。使用declarativeContent
如果我理解正确,则只能执行一些操作(例如:actions: [ new chrome.declarativeContent.ShowPageAction() ]以显示页面操作)。我可以用自己的代码定义自己的动作吗?

谁能告诉我哪条路可走?

0 个答案:

没有答案