Загружать popover программно в расширении приложения Safari - PullRequest
0 голосов
/ 17 октября 2018

В настоящее время я реализую расширение приложения Safari, которое я хочу иметь возможность показывать всплывающее окно расширения с помощью сочетания клавиш.

Используя старый API расширения Safari, это было сделано с помощью

safari.extension.toolbarItem[0].showPopover()

во вставленном JavaScript.Это, однако, больше невозможно в новом API расширения приложений Safari.

В настоящее время я слушаю ярлык введенного JavaScript и отправляю сообщение на расширение:

document.onkeyup = function(e) {
    if (e.shiftKey && e.altKey && e.which == 80) {
        safari.extension.dispatchMessage("showPopover");
    }
};

В расширении у меня есть прослушиватель сообщений, который должен загрузить поповер:

override func messageReceived(withName messageName: String, from page: 
  SFSafariPage, userInfo: [String : Any]? = nil) { 
    page.getPropertiesWithCompletionHandler { properties in
        if messageName == "showPopover" {
            // Here the popover should be loaded...
        }
    }
}

Не могу понять, как это сделать.Документация Apple не предоставляет никакой информации.Stackoverflow и Github также не помогли.Однако я нашел следующие два вопроса о Stackoverflow, которые, похоже, пытаются сделать то же самое, но безуспешно: [1] , [2]

Любая помощь по этому вопросу?Разве это просто невозможно?Или я что-то упустил?

Спасибо за помощь.

1 Ответ

0 голосов
/ 22 октября 2018

У них нет поддержки для динамического открытия поповера.Но в любом случае, если вам удастся динамически изменить файл info.plist и добавить его в расширение, вы сможете это сделать.

Другой способ - открыть файл info.plist и перейти к «SFSafariToolbarItem»."свойство, затем измените" Действие "на" Popover "

Ваш код будет выглядеть следующим образом,

<key>SFSafariToolbarItem</key>
    <dict>
        <key>Action</key>
        <string>Popover</string>
        <key>Identifier</key>
        <string>Button</string>
        <key>Image</key>
        <string>ToolbarItem.pdf</string>
        <key>Label</key>
        <string>Test Safari Extension</string>
    </dict>

Удачи.

...