2

我正在尝试编写一个 Safari 扩展,该扩展由主工具栏上的一个按钮和一个关联的弹出框组成,以及一个上下文菜单项。基本感觉模仿了 1Password 扩展的感觉。

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

我如何“显示”弹出窗口?

4

1 回答 1

6

如果您只有一个工具栏项和一个弹出框(并且从不打算添加更多),那么它只是一行。假设您已经将弹出框分配给 Extension Builder 中的工具栏项,您可以使用:

safari.extension.toolbarItems[0].showPopover();

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

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();  
}
于 2012-11-25T21:47:18.830 回答