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

时间:2014-05-14 22:48:37

标签: javascript html macos safari safari-extension

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

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

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

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

1 个答案:

答案 0 :(得分: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,而无需将消息传递到全局页面。实际上,您的扩展可能根本不需要全局页面。