【问题标题】:Chrome extension, focus on the page instead of omnibox after selected tab is updated?Chrome扩展程序,在更新选定标签后关注页面而不是多功能框?
【发布时间】:2011-03-03 15:21:23
【问题描述】:

我创建了一个名为quickmarks 的扩展程序,它将在当前选定的选项卡上按关键字打开书签。我是 使用多功能框选择书签 (chrome.omnibox.onInputEntered), 和chrome.tabs.update API 在当前选项卡中打开书签的 url,通过 在updateProperties 中提供网址。但是在选项卡之后 更新后,焦点仍保留在多功能框中,这使用户- 体验不如我想的那么好。那么有没有办法设置 关注页面,而不是多功能框。

顺便说一句,我尝试使用chrome.tabs.create 打开一个新标签。这 页面将被聚焦而不是多功能框,这是我想要的 行为。

谢谢。

【问题讨论】:

    标签: google-chrome google-chrome-extension


    【解决方案1】:

    使用chrome.tabs.update(tab.id, {url: url, selected: true}); 对我有用。

    【讨论】:

      【解决方案2】:

      接受的答案在 Chrome 31 中不再有效。我曾希望这是一个简单的问题,即 selected 属性被弃用,但替换 highlighted 属性也没有将焦点分配给标签的内容。

      我只能通过关闭当前选项卡然后在其位置创建一个新选项卡来从多功能框中窃取焦点。以下是适用于 Chrome 31 的代码:

      chrome.tabs.getSelected(null, function(tab) {
          chrome.tabs.remove(tab.id, function() {
              chrome.tabs.create({url:url, active:true});
          });
      });
      

      虽然这肯定不理想,但当前标签页已关闭,新标签页打开的速度如此之快,您几乎看不到任何区别。

      【讨论】:

      • 我目前也在使用这种方法,但我建议复制选项卡(您可以在删除后执行此操作)而不是仅删除它,以便保留其历史记录。
      【解决方案3】:

      Dave Teare 说得对,这在当前版本的 Chrome 中不再适用,但他的方法对我不起作用。删除选项卡后似乎没有调用 chrome.tabs.create。

      我使用 Chrome 扩展程序 iChrome,我希望在创建新选项卡时选择它,因此我安装了另一个扩展程序,将新选项卡重定向到 iChrome。不幸的是,它使用了相同的已弃用的“selected:true”方法。

      据我所知,目前没有办法干净地做到这一点,你不能让 Chrome 使更新选项卡的输入成为焦点,也不能让它选择 onmibar 中的文本,所以你不能在创建新选项卡后开始搜索。所以这就是我想出的:

      chrome.tabs.create({url:url, active:true}, function(){
          chrome.tabs.remove(tab.id);
      });
      

      肯定还是不理想,当它关闭旧标签时你会看到一个闪烁,但它可以工作。输入被聚焦。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        相关资源
        最近更新 更多