我目前实现了一个 Safari 应用扩展,我希望它能够使用键盘快捷键显示扩展的弹出窗口。
使用旧的 Safari Extension API,这是通过使用
safari.extension.toolbarItem[0].showPopover()
在插入的 JavaScript 中。然而,这在新的 Safari App Extension API 中不再可能。
我目前正在做的是监听注入(inject)的 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 文件并能够注入(inject)扩展,那么您就可以这样做。
另一种方法是,打开 info.plist 文件并找到“SFSafariToolbarItem”属性, 然后将“Action”更改为“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>
祝你好运。
关于javascript - 在 Safari App Extension 中以编程方式加载弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52861211/