我正在编写一个chrome扩展程序,它会在一定的时间间隔后刷新页面。我把它弄好了,但是出现了一个新问题.. 每当页面刷新时,选项卡都会突出显示(开始闪烁)或者进入焦点。即它正在集中精力。
现在这取决于Chrome浏览器状态的不同,但核心问题是相同的: 1.如果用户将标签切换到另一个(假设在gmail.com中写一封电子邮件),同时等待页面刷新自己,刷新当前的邮件标签将变得不专心(所以他不能继续写他的电子邮件而不点击窗口首先)
如果用户在他的工作区上切换到任何其他应用程序(如我的电脑,Outlook等),刷新时铬图标将开始在任务栏上闪烁(非常烦人)
如果用户打开了多个镀铬窗口,每个镀铬窗口都运行刷新代码,那么在刷新时该窗口将获得焦点(来到顶部)。每当发生特定刷新时,这将重复所有镀铬窗口。
重现问题的步骤:
写一个简单的扩展名
在后台页面中,使用以下命令创建新标签页
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窗口都会从任务栏中取消最小化,或者将焦点放在任务栏上。
我想要的是在页面刷新时删除此焦点。 如果有人能帮助我,我会非常感激。
谢谢, Umair
编辑:
我的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上,在pageload上调用函数reload()。
function reloadPage() {
//code for 10 second delay
location.reload();
}
myPage.htm本身就是一个简单的页面,显示几行文字,如“无法加载页面”等。
答案 0 :(得分:1)
我根据我的要求更改了代码并让它为我工作。 我所做的不是使用重新加载函数来刷新页面,而是使用chrome扩展的消息传递技术从我的js向background.js发送消息(包含url和tabID)并使用url更新相关选项卡
我知道这不是一个完美的解决方案,但它对我有用,因此即时分享。