Chrome 扩展:打开新标签页时不会失去弹出焦点

Chrome Extension: Open new tab without losing popup focus

我有一个简单的研究列表 links 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 键并单击全部三个 link,在后台打开新标签页。但是,Chrome 扩展弹出窗口似乎并非如此。如果您按住 Ctrl 键并单击 link,该扩展程序会关闭弹出窗口,这会阻止您在任何时候单击多个 link。

我已经尝试过点击 chrome.tabs.create 方法,这在其他几篇文章中有所描述,但这似乎与点击 target="_blank" 类似,因为它只是打开一个带有焦点的新标签。

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

有没有什么方法可以在没有焦点的情况下打开一个新选项卡(ctrl+单击),同时仍然允许扩展弹出窗口在当前选项卡中保持可见,以便用户可以单击第二个、第三个或第四个 link?这样用户就不必多次重新运行扩展程序,而这需要时间,因为它必须重新验证和查询数据。

是的,有an option for create:

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

我完全按照您的描述在我的一个扩展程序中使用它。

虽然已接受的答案有效,但我最终还是这样做了,以便在Chrome 扩展 - 使用 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,需要在元素中定义光标样式或者class.

全局变量:

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 命令 ⌘

的元键