gpt4 book ai didi

javascript - Safari 扩展显示不同窗口的弹出窗口

转载 作者:数据小太阳 更新时间:2023-10-29 03:53:26 25 4
gpt4 key购买 nike

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

有什么想法吗?

全局页面文件:

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

注入(inject)的内容:

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();

希望对你有帮助

关于javascript - Safari 扩展显示不同窗口的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38960246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com