在旧版Safari扩展程序中,我们使用全局JavaScript来处理beforeNavigate事件。但是,在新的Safari应用扩展概念中,是否有一种方法可以在应用程序代码中捕获相同的事件?
我尝试过覆盖beginRequest,但不确定如何在此处捕获URL信息。
override func beginRequest(with context: NSExtensionContext) {
//TODO:
}
在旧版Safari扩展程序中,我们使用全局JavaScript来处理beforeNavigate事件。但是,在新的Safari应用扩展概念中,是否有一种方法可以在应用程序代码中捕获相同的事件?
我尝试过覆盖beginRequest,但不确定如何在此处捕获URL信息。
override func beginRequest(with context: NSExtensionContext) {
//TODO:
}
您可以在Safari应用程序扩展中使用脚本文件,该脚本会在Safari加载页面之前自动注入。
该脚本从Safari浏览器获取导航事件,然后将该事件传递给应用程序扩展,扩展通过以下方法处理此事件:
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))")
}
}