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

时间:2012-11-24 15:22:37

标签: safari-extension

我正在尝试编写一个Safari扩展程序,它包含主工具栏上的一个按钮,上面有一个popover和一个上下文菜单项。基本感觉是在1Password扩展感觉之后建模的。

popover的一个工作是允许一个人登录。我还有条件地更改了上下文菜单项的操作,如果没有登录的人点击我想要的菜单项显示允许他们登录的popover,但我在开发人员指南中找不到这样做的方法。

如何“显示”弹出窗口?

1 个答案:

答案 0 :(得分:6)

如果你只有一个工具栏项和一个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();  
}