Ris*_*vik 6 javascript google-chrome google-chrome-extension
问题是如何在特定选项卡上查询此类事件:
目前,我已经研究过检查指定URL操作的最简单方法是使用内容脚本,它可以侦听事件,然后将带有消息API的结果发送到后台脚本.
gka*_*pak 11
您无法在特定选项卡上为此类事件注册侦听器.可能有不同的方法,但我建议使用chrome.tabs.*事件来监听有关所有选项卡的事件,然后手动进行过滤.
[ 注意:您需要在清单中请求必要的权限,例如"标签","空闲",主机匹配模式等.]
用户已使用特定网址加载了标签,例如:google.com
附加以下事件的监听器:
...然后根据URL进行过滤.例如:
var urlRegex = /https?:\/\/([^\.]+\.)?google.com/;
chrome.tabs.onUpdated.addListener(function(tabId, info, tab) {
if (info.url && urlRegex.test(info.url)) {
/* The tab with ID `tabId` has been updated to a URL
* in the `google.com` domain. Let's do something... */
...
}
});
Run Code Online (Sandbox Code Playgroud)
用户已关闭选项卡.
附加以下事件的监听器:
...然后根据URL进行过滤.例如:
var urlRegex = ...;
chrome.tabs.onRemoved.addListener(function(tabId, info) {
chrome.tabs.get(tabId, function(tab) {
if (urlRegex.test(tab.url)) {
/* The tab with ID `tabId`, with a web-page in the
* `google.com` domain, is being closed. Let's do something... */
...
}
});
});
Run Code Online (Sandbox Code Playgroud)
选项卡处于非活动状态,如切换到另一个选项卡.
不幸的是,没有onFocusLost事件.您可以侦听chrome.tabs.onActivated事件并跟踪每个窗口中的活动选项卡.然后,当激活另一个选项卡时,如果之前激活的选项卡指向google.com,请执行某些操作.(我不打算详细描述一种机制).
对于这种特殊情况,使用内容脚本并在禁用选项卡时通知后台页面可能更简单:
/* In `content.js` */
window.addEventListener("blur", function() {
chrome.runtime.sendMessage({ text: "focusLost" });
})
/* In `background.js` */
chrome.runtime.onMessage.addListener(function(msg, sender) {
if (msg.text === "focusLost") {
/* OMG - The user switched to another tab :( */
}
});
Run Code Online (Sandbox Code Playgroud)
检查用户是否空闲.
您无法检查用户是否在特定选项卡上处于非活动状态,但一般情况下.如您所述,您可以使用chrome.idle API,为chrome.idle.onStateChanged事件注册一个侦听器.
chrome.idle.onStateChanged.addListener(function(newState) {
if (newState == "active") {
/* The user came back. Let's do something... */
} else {
/* The user is not around. Let's wait... */
}
});
Run Code Online (Sandbox Code Playgroud)