2012-11-24 190 views
2

我正在嘗試編寫一個Safari擴展功能,該擴展功能包含主工具欄上的按鈕以及與其關聯的彈出窗口以及上下文菜單項。基本的感覺仿照1Password擴展的感覺。如何以編程方式顯示Safari擴展彈出窗口

popover的工作之一是允許一個人登錄。我還有條件地更改上下文菜單項的操作,並且如果某個人沒有登錄,單擊菜單項我會喜歡顯示允許他們登錄的popover,但是我找不到在開發人員指南中執行此操作的方法。

如何「顯示」彈出窗口?

+0

有一個在http://stackoverflow.com/questions/12497414/how-to-的此討論:在活動的瀏覽器窗口中打開一個酥料餅通過其標識符指定,指定的工具欄項下打開popover與鍵盤快捷鍵 – canisbos

+0

@canisbos如果你把你在答案的最後作出的「註釋」作爲答案在這裏我會接受它。或者你認爲我們應該投票結束?儘管答案是一樣的,但我覺得這些問題已經不同了。 FWIW在我詢問之前我做過搜索,沒有遇到其他問題。 –

回答

6

如果您只有一個工具欄項目和一個彈出窗口(並且從未打算添加更多),那麼它只是一行。假設你已經分配酥料餅在擴展生成器工具欄項目上,你可以使用:

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(); 
} 
相關問題