繁体   English   中英

在Safari App Extension中以编程方式加载弹出窗口

[英]Load popover programmatically in Safari App Extension

目前,我实现了Safari App Extension,我希望它能够使用键盘快捷键显示扩展程序的弹出窗口。

使用旧的Safari Extension API,可通过使用

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

在插入的JavaScript中。 但是,新的Safari App Extension API中已不再可能。

我目前正在做的是侦听注入的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]

有什么帮助吗? 只是不可能吗? 还是我错过了什么?

谢谢您的帮助。

他们不支持动态打开弹出窗口。 但是无论如何,如果您设法动态地更改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>

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM