0

我正在编写一个 chrome 扩展程序,它会在一定时间间隔后刷新页面。我让它工作正常,但出现了一个新问题。每当页面刷新时,选项卡就会突出显示(开始闪烁)或者成为焦点。即它越来越集中。

现在,这取决于 chrome 浏览器状态,但核心问题是相同的: 1. 如果用户在等待页面刷新时将选项卡切换到另一个选项卡(假设在 gmail.com 中写一封电子邮件),则刷新当前邮件选项卡会失去焦点(所以他不能在不先点击窗口的情况下继续写他的电子邮件)

  1. 如果用户切换到其工作区中的任何其他应用程序(例如我的计算机、Outlook 等),刷新时 chrome 图标将开始在任务栏上闪烁(非常烦人)

  2. 如果用户打开了多个 chrome 窗口,每个窗口都有一个运行刷新代码的选项卡,那么在刷新时,该窗口将获得焦点(位于顶部)。每当发生特定刷新时,这将对所有 chrome 窗口重复。

重现问题的步骤:

  1. 写一个简单的扩展

  2. 在后台页面中,使用以下命令创建一个新选项卡:

    chrome.tabs.create({ url: "https://drive.google.com/", active: false})
    
  3. 现在在一个循环中,每分钟之后,使用以下命令刷新此选项卡:

    chrome.tabs.update(tab_id, {url: "https://drive.google.com/",
                                active: false,
                                highlighted: false});
    
  4. 启动此代码后,要么最小化 chrome 窗口,要么转移工作区并专注于其他事情。

  5. 每次调用 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 本身就是一个简单的页面,显示几行文本,例如“无法加载页面”等。

4

1 回答 1

1

我更改了代码并根据我的要求让它为我工作。我所做的不是使用重新加载功能来刷新页面,而是使用 chrome 扩展的消息传递技术将消息(包含 url 和 tabID)从我的 js 发送到 background.js 并使用 url 更新相关选项卡.

我知道这不是一个完美的解决方案,但它对我有用,因此我分享它。

于 2013-11-05T10:29:27.133 回答