在Safari的扩展栏中创建一个Popover

问题描述 投票:0回答:1

我正在创建一个Safari扩展栏,并希望在其中包含多个链接,并通过单击链接显示特定于该链接的弹出窗口。

到目前为止,我发现了这些:https://developer.apple.com/library/archive/documentation/Tools/Conceptual/SafariExtensionGuide/AddingPopovers/AddingPopovers.html https://developer.apple.com/documentation/safariextensions/safariextension/1635377-popovers

但是,一切似乎都指的是将它们与工具栏项目一起使用,而不是使用扩展栏。

我想知道是否有可能使弹出窗口与扩展栏中的链接一起工作,如果有的话,如果有人能指出我正确的方向。

javascript html macos safari safari-extension
1个回答
0
投票

当然,为什么不呢?这里有一些示例代码可以帮助您入门。

说你的扩展栏有几个像这样的链接:

<a href="javascript:openPopover('p0');">Open Popover 0</a>
<a href="javascript:openPopover('p1');">Open Popover 1</a>

(当您单击链接时,不是运行某些JavaScript的最优雅方式,但无论如何。)

此外,假设您有一个toolbarItem(工具栏按钮),并且您希望在其下方弹出不同的弹出窗口,具体取决于您单击的栏上的链接。 openPopover函数可以像这样简单:

function openPopover(pid) {
    var tbItem = safari.extension.toolbarItems[0];
    var thisPop = safari.extension.popovers.filter(function (p) {
        return p.identifier == pid;
    })[0];
    tbItem.popover = thisPop;
    tbItem.showPopover();
}

由于扩展栏可以访问扩展的全局safari对象,因此它可以直接操作toolbarItems并打开popovers,而无需将消息传递到全局页面。实际上,您的扩展可能根本不需要全局页面。

© www.soinside.com 2019 - 2024. All rights reserved.