获取页面事件,选项卡关闭,失去焦点
Getting the page events, tab closed, lost focus?
问题是如何在特定选项卡上查询此类事件:
- 用户已使用特定的URL加载了选项卡,例如:google.com(我认为最简单的方法是使用chrome.tabs.query,然后您可以获取带有url的活动选项卡)
- 用户已关闭选项卡 标签
- 处于非活动状态,就像切换到另一个标签页一样
- 检查用户是否空闲(还有用于空闲的 chrome api)。
研究了检查指定 URL 操作的最简单方法是使用内容脚本,它可以侦听事件,然后将带有消息 API 的结果发送到后台脚本。
不能在特定选项卡上为此类事件注册侦听器。有不同的方法,但我建议使用 chrome.tabs.* 事件来侦听有关所有选项卡的事件,然后手动进行过滤。
[注意:您需要在清单中请求必要的权限,例如"选项卡"、"空闲"、主机匹配模式等]
用户已使用特定 URL 加载选项卡,例如:google.com
为以下事件附加侦听器:
- chrome.tabs.onCreated
- chrome.tabs.on更新
。,然后根据 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... */
...
}
});
用户已关闭选项卡。
为以下事件附加侦听器:
- chrome.tabs.on已删除
。,然后根据 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... */
...
}
});
});
选项卡处于非活动状态,就像切换到另一个选项卡一样。
不幸的是,没有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 :( */
}
});
检查用户是否空闲。
您无法检查用户在特定选项卡方面是否处于非活动状态,但通常处于非活动状态。正如你提到的,你可以使用 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... */
}
});
相关文章:
- Javascript游戏输入失去焦点
- 如何使元素在按下按钮时不会失去焦点
- 在输入上失去焦点()
- 如何在没有科尔多瓦插件的情况下隐藏软键盘,也不会失去焦点
- ExtJS5 菜单面板在面板失去焦点时消失
- Javascript弹出窗口在某些情况下失去焦点
- 按下esc键或随机单击鼠标时,Jcrop失去焦点
- 当我失去焦点时,不会触发ng模糊
- JavaScript代码在失去焦点时停止
- 文本框在滚动时在模式中失去焦点
- 任何防止在从 tinymce 容器中单击输入文本时失去焦点的方法
- 按键事件在文本输入失去焦点并再次获得焦点后自动触发
- 获取页面事件,选项卡关闭,失去焦点
- DIV 在单击其中的元素时失去焦点
- 如何在内容可编辑元素中的文本失去焦点时保持该元素处于选中状态
- 为什么欧芹不验证每个字段(例如失去焦点),而我调用$('#myForm').validate();
- 以 jQuery 为中心的文本框在 Safari 中输入一个字符后失去焦点
- jQuery 图像推子不会在窗口失去焦点时停止
- ASP.NET 文本框不会失去焦点
- 在调用窗口模糊(浏览器失去焦点)时避免元素模糊处理程序