我正在创建一个Safari扩展栏,并且希望在其中包含多个链接,并且通过单击该链接会显示特定于该链接的弹出窗口。
到目前为止,我发现了这些: https://developer.apple.com/library/archive/documentation/Tools/Conceptual/SafariExtensionGuide/AddingPopovers/AddingPopovers.html https://developer.apple.com/documentation/safariextensions/safariextension/1635377-popovers
但是,所有内容似乎都指的是将它们与工具栏项目一起使用,而不是扩展栏。
我想知道是否有可能使弹出窗口与扩展栏中的链接一起工作,如果有的话,如果有人能指出我正确的方向。
答案 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,而无需将消息传递到全局页面。实际上,您的扩展可能根本不需要全局页面。