我正在构建一个Chrome扩展程序来跟踪用户花费的时间来说http://example.com。因此,基本上当用户更改为具有不同URL的另一个选项卡时,它会停止计时器,当她返回第一个选项卡或当她将当前选项卡的URL更改为http://example.com时,计时器将重新启动。
问题是:如何以尽可能少的权限执行此操作?
以下是我的想法:
1。使用chrome.tabs.onUpdated
和chrome.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() ]
以显示页面操作)。我可以用自己的代码定义自己的动作吗?
谁能告诉我哪条路可走?