我正在编写一个 chrome 扩展程序,它会在一定时间间隔后刷新页面。我让它工作正常,但出现了一个新问题。每当页面刷新时,选项卡就会突出显示(开始闪烁)或者成为焦点。即它越来越集中。
现在,这取决于 chrome 浏览器状态,但核心问题是相同的: 1. 如果用户在等待页面刷新时将选项卡切换到另一个选项卡(假设在 gmail.com 中写一封电子邮件),则刷新当前邮件选项卡会失去焦点(所以他不能在不先点击窗口的情况下继续写他的电子邮件)
如果用户切换到其工作区中的任何其他应用程序(例如我的计算机、Outlook 等),刷新时 chrome 图标将开始在任务栏上闪烁(非常烦人)
如果用户打开了多个 chrome 窗口,每个窗口都有一个运行刷新代码的选项卡,那么在刷新时,该窗口将获得焦点(位于顶部)。每当发生特定刷新时,这将对所有 chrome 窗口重复。
重现问题的步骤:
写一个简单的扩展
在后台页面中,使用以下命令创建一个新选项卡:
chrome.tabs.create({ url: "https://drive.google.com/", active: false})
现在在一个循环中,每分钟之后,使用以下命令刷新此选项卡:
chrome.tabs.update(tab_id, {url: "https://drive.google.com/", active: false, highlighted: false});
启动此代码后,要么最小化 chrome 窗口,要么转移工作区并专注于其他事情。
每次调用 tabs.update() 时,Chrome 窗口要么从任务栏取消最小化,要么将焦点放在它上面。
我想要的是在页面刷新时移除这个焦点。如果有人可以帮我解决这个问题,我将非常感激。
谢谢, 乌梅尔
编辑:
我的 background.js 文件的代码
chrome.webNavigation.onErrorOccurred.addListener(function (_errorDetails) {
var myUrl = 'myPage.htm';
chrome.tabs.update(_errorDetails.tabId, { url: myUrl, active: false,
highlighted: false, selected: false },
function (_tabDetails) {
chrome.windows.update(_tabDetails.windowId, { drawAttention: false });
});
});
iv 试图使所有相关参数为 false 以停止焦点。
同样在 myPage.htm 上,函数 reload() 在页面加载时被调用。
function reloadPage() {
//code for 10 second delay
location.reload();
}
myPage.htm 本身就是一个简单的页面,显示几行文本,例如“无法加载页面”等。