[英]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.