Chrome扩展程序:打开新标签页而不会丢失弹出式焦点

时间:2015-04-09 15:28:02

标签: javascript google-chrome-extension

我在Chrome扩展程序上有一个简单的研究链接列表:

<a href="http://www.example1.com" target="_blank">Research Link 1</a>
<a href="http://www.example2.com" target="_blank">Research Link 2</a>
<a href="http://www.example3.com" target="_blank">Research Link 3</a>

在任何网页上,我都可以按住Ctrl键并单击所有三个链接,在后台打开新标签页。但是,Chrome扩展弹出窗口似乎不是这种情况。如果您按住某个键并单击某个链接,该扩展程序会关闭该弹出窗口,这会阻止您随时单击多个链接。

我尝试过点击chrome.tabs.create方法,这在其他几篇文章中有描述,但这似乎只是点击target =“_ blank”,因为它只是打开一个有焦点的新标签。

chrome.tabs.create({url: 'http://www.google.com'});

有没有办法打开没有焦点的新标签(ctrl + click),同时仍然允许扩展弹出窗口在当前标签中保持可见,以便用户可以点击第二,第三或第四个链接?这样,用户不必多次重新运行扩展,这需要花费时间,因为它必须重新进行身份验证和查询数据。

2 个答案:

答案 0 :(得分:13)

是的,有an option for create

chrome.tabs.create({url: 'http://www.google.com', active: false});

我正在我的扩展程序中使用它,正如您所描述的那样。

答案 1 :(得分:0)

以下是我在Chrome扩展程序中允许正确的ctrl +单击(在新背景窗口中打开选项卡)时所做的事情 - 使用jQuery。

<a class="ctrllink" style="cursor: pointer;" url="http://www.example1.com">Research Link 1</a>
<a class="ctrllink" style="cursor: pointer;" url="http://www.example2.com">Research Link 2</a>
<a class="ctrllink" style="cursor: pointer;" url="http://www.example3.com">Research Link 3</a>

我使用<a>标记来维护默认的超链接样式(颜色,悬停下划线等),但删除了href。由于没有href,需要在元素或类中定义光标样式。

全局变量:

var tabplacement = 0;

Tabplacement用于模拟Chrome打开标签的方式,从最后创建的标签开始递增。

$(function () {
    $('.ctrllink').on('click', function (event) {
        var ctrlpressed = (event.ctrlKey || event.metaKey);
        var url = $(this).attr('url');
        chrome.tabs.getSelected(null, function (tab) {
            tabplacement += 1;
            var index = tab.index + tabplacement;
            chrome.tabs.create({'url': url, active: !ctrlpressed, 'index': index});
        });
    });
});

包含用于处理Mac Command的metaKey⌘