如何以编程方式显示Safari Extension popover

rm-*_*-rf 2 safari-extension

我正在尝试编写一个Safari扩展,它包含主工具栏上的一个按钮,上面有一个弹出窗口,以及一个上下文菜单项.基本感觉是在1Password扩展感觉之后建模的.

popover的一个工作是允许一个人登录.我也有条件地改变上下文菜单项的动作,如果一个人没有登录,点击菜单项我想显示popover允许他们登录,但我找不到在开发人员指南中执行此操作的方法.

我如何"显示"一个弹出窗口?

chu*_*ter 6

如果你只有一个工具栏项和一个popover(并且从不计划添加更多),那么它只是一行.假设您已将弹出窗口分配给Extension Builder中的工具栏项,您可以使用:

safari.extension.toolbarItems[0].showPopover();
Run Code Online (Sandbox Code Playgroud)

但是,如果您有多个popover和(可能)多个工具栏项,这里是一个通用函数,用于在活动浏览器窗口中的指定工具栏项下打开由其标识符指定的弹出框:

function showPopover(popoverId, toolbarItemId) {
    var toolbarItem = safari.extension.toolbarItems.filter(function (tbi) {
        return tbi.identifier == toolbarItemId && tbi.browserWindow == safari.application.activeBrowserWindow;
    })[0];
    var popover = safari.extension.popovers.filter(function (po) {
        return po.identifier == popoverId;
    })[0];
    toolbarItem.popover = popover;
    toolbarItem.showPopover();  
}
Run Code Online (Sandbox Code Playgroud)