使用较旧的safari扩展程序,我们使用全局javascript来处理beforeNavigate事件,但是使用新的safari app extension概念有没有办法在应用程序代码中捕获相同的事件?
我试过overiding beginRequest
但不知道如何在这里捕获网址信息
override func beginRequest(with context: NSExtensionContext) {
//TODO:
}
答案 0 :(得分:0)
您可以在safari应用程序扩展中使用脚本文件,该脚本会在页面加载到safari中之前自动注入。
该脚本从safari浏览器获取Navigation事件,然后该脚本将该事件提供给应用扩展程序,然后该扩展程序通过以下方法处理该事件:
override func messageReceived(withName messageName: String, from page: SFSafariPage, userInfo: [String : AnyObject]!) {
page.getPropertiesWithCompletionHandler { properties in
NSLog("The extension received a message (\(messageName)) from a script injected into (\(properties?.url)) with userInfo (\(userInfo))")
}
}
注意:该事件具有所需的URL信息。