【发布时间】:2013-11-12 11:57:15
【问题描述】:
我正在编写一个 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 });
});
});
我试图将所有相关参数设为 false 以停止焦点。
同样在 myPage.htm 上,函数 reload() 在页面加载时被调用。
function reloadPage() {
//code for 10 second delay
location.reload();
}
myPage.htm 本身就是一个简单的页面,显示几行文本,例如“无法加载页面”等。
【问题讨论】:
-
它在我的系统上正常工作(即没有焦点,没有闪烁)。也许问题出在其他地方。发布更多代码。另外,你在什么系统上运行这个?什么 Chrome 版本?
标签: google-chrome google-chrome-extension