Safari extension 如何以编程方式显示Safari扩展popover

Safari extension 如何以编程方式显示Safari扩展popover,safari-extension,Safari Extension,我正在尝试编写一个Safari扩展,它由主工具栏上的一个按钮和一个上下文菜单项组成。基本感觉仿照1密码扩展的感觉 popover的工作之一是允许用户登录。我也在有条件地更改上下文菜单项的操作,如果未登录的用户单击菜单项,我希望显示允许他们登录的弹出窗口,但在开发人员指南中找不到这样做的方法 如何“显示”一个popover?如果您只有一个工具栏项和一个popover(并且从未计划添加更多),那么它只是一行。假设您已经将弹出框指定给Extension Builder中的工具栏项,则只需使用: saf

我正在尝试编写一个Safari扩展,它由主工具栏上的一个按钮和一个上下文菜单项组成。基本感觉仿照1密码扩展的感觉

popover的工作之一是允许用户登录。我也在有条件地更改上下文菜单项的操作,如果未登录的用户单击菜单项,我希望显示允许他们登录的弹出窗口,但在开发人员指南中找不到这样做的方法


如何“显示”一个popover?

如果您只有一个工具栏项和一个popover(并且从未计划添加更多),那么它只是一行。假设您已经将弹出框指定给Extension Builder中的工具栏项,则只需使用:

safari.extension.toolbarItems[0].showPopover();
但是,如果您有多个popover和(可能)多个工具栏项,这里有一个通用函数,用于在活动浏览器窗口中的指定工具栏项下打开由其标识符指定的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();  
}

在@canisbos有一个关于这个问题的讨论,如果你把你在答案末尾的“便条”放在这里作为答案,我会接受它。还是你认为我们应该投票结束?我觉得尽管答案是一样的,但问题还是不同的。FWIW我在提问之前进行了搜索,没有遇到其他问题。