2012-11-24 1 views
2

Я пытаюсь написать расширение Safari, состоящее из кнопки на главной панели инструментов с привязкой к ней и контекстным пунктом меню. Основное чувство моделируется после ощущения расширения 1Password.Как показать всплывающее расширение Safari программно

Одна из задач popover заключается в том, чтобы позволить пользователю войти в систему. Я также условно изменяю действие элемента контекстного меню, и если кто-то из пользователей не зашел в систему, как показать popover, позволяющий им войти в систему, но я не могу найти способ сделать это в руководствах разработчика.

Как мне показать «popover»?

+0

Существует обсуждение этого в http://stackoverflow.com/questions/12497414/how-to- open-popover-with-keyboard-shortcut – canisbos

+0

@canisbos, если вы положите «Заметку», которую вы сделали в конце своего ответа там, как ответ, я приму это. Или вы думаете, что мы должны проголосовать за закрытие? Я чувствую, что вопросы достаточно разные, хотя ответ один и тот же. FWIW Я искал, прежде чем я спросил и не встретил другой вопрос. –

ответ

6

Если у вас есть только один элемент панели инструментов и один popover (и никогда не планируете добавлять больше), то это всего лишь одна строка. Предполагая, что вы уже назначен поповер к элементу панели инструментов в 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(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^