在safari的扩展栏中创建一个弹出窗口

Creating a Popover in extension bar for safari

本文关键字:一个 窗口 safari 扩展 创建      更新时间:2023-09-26

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

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

然而,似乎所有的东西都是指在工具栏项中使用它们,而不是扩展栏。

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

当然可以,为什么不呢?下面是一些示例代码,可以帮助您入门。

假设你的扩展栏有一对这样的链接:

<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对象,因此它可以直接操作工具栏项并打开弹出窗口,而无需将消息传递给全局页面。实际上,您的扩展可能根本不需要全局页面。