Safari 扩展显示不同的弹出框 Window

Safari Extension Showing Popover Different Window

我正在尝试构建一个 Safari 扩展,当用户点击 Command+B 时,它将显示弹出窗口。使用下面的代码它可以工作,但总是在不同的 window 而不是当前的 window/tab 上显示弹出窗口。我希望它在当前 window 上显示弹出窗口,而不是切换到另一个 window 并在那里打开弹出窗口。如果只有一个 Safari window 打开,它会完美运行,但当多个 windows 打开时,它就会开始出现问题。

有什么想法吗?

全局页面文件:

<script>
    safari.application.addEventListener('message', function (e) {
        if (e.name == 'Show Popover') {
            safari.extension.toolbarItems[0].showPopover();
        }
    }, false);
</script>

注入的内容:

document.addEventListener("keydown", keydown);

function keydown(event) {
    if ( event.metaKey && event.keyCode == 66) {
      event.preventDefault();
      safari.self.tab.dispatchMessage('Show Popover', {});
    }
}

这是因为您在此处手动选择了第一个 toolbarItem;

safari.extension.toolbarItems[0].showPopover(); 

您需要确定弹出窗口需要出现在哪个 toolbarItem 上;

像这样;

var toolBarID = 'my_id';
var activeItem = safari.extension.toolbarItems.filter(function (button) {
    return button.identifier == toolBarID && button.browserWindow == safari.application.activeBrowserWindow;
})[0];

然后您将此对象用于 showPopover 函数;

activeItem.showPopover();

希望对您有所帮助