【问题标题】:How to stop chrome tab focus?如何停止 chrome 标签焦点?
【发布时间】:2013-11-12 11:57:15
【问题描述】:

我正在编写一个 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 });
        });
    });

我试图将所有相关参数设为 false 以停止焦点。

同样在 myPage.htm 上,函数 reload() 在页面加载时被调用。

    function reloadPage() {
    //code for 10 second delay

    location.reload();  
    }

myPage.htm 本身就是一个简单的页面,显示几行文本,例如“无法加载页面”等。

【问题讨论】:

  • 它在我的系统上正常工作(即没有焦点,没有闪烁)。也许问题出在其他地方。发布更多代码。另外,你在什么系统上运行这个?什么 Chrome 版本?

标签: google-chrome google-chrome-extension


【解决方案1】:

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

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

【讨论】:

  • “我知道这不是一个完美的解决方案”:为什么会这样?这就是你应该一直这样做的方式(事实上,根据你最初的描述,我觉得你已经这样做了)。顺便说一句,如果您觉得自己做得不好,请分享代码,以便我们提出可能的改进建议。
猜你喜欢
  • 1970-01-01
  • 2020-09-20
  • 2015-03-13
  • 2015-02-04
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多