如何停止Chrome标签焦点?

时间:2013-11-01 09:34:30

标签: google-chrome google-chrome-extension

我正在编写一个chrome扩展程序,它会在一定的时间间隔后刷新页面。我把它弄好了,但是出现了一个新问题.. 每当页面刷新时,选项卡都会突出显示(开始闪烁)或者进入焦点。即它正在集中精力。

现在这取决于Chrome浏览器状态的不同,但核心问题是相同的: 1.如果用户将标签切换到另一个(假设在gmail.com中写一封电子邮件),同时等待页面刷新自己,刷新当前的邮件标签将变得不专心(所以他不能继续写他的电子邮件而不点击窗口首先)

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

  2. 如果用户打开了多个镀铬窗口,每个镀铬窗口都运行刷新代码,那么在刷新时该窗口将获得焦点(来到顶部)。每当发生特定刷新时,这将重复所有镀铬窗口。

  3. 重现问题的步骤:

    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窗口都会从任务栏中取消最小化,或者将焦点放在任务栏上。

    6. 我想要的是在页面刷新时删除此焦点。 如果有人能帮助我,我会非常感激。

      谢谢, 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本身就是一个简单的页面,显示几行文字,如“无法加载页面”等。

1 个答案:

答案 0 :(得分:1)

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

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