Safari app扩展如何捕获之前的Navigate事件?

时间:2017-07-05 04:15:57

标签: swift xcode macos safari safari-extension

使用较旧的safari扩展程序,我们使用全局javascript来处理beforeNavigate事件,但是使用新的safari app extension概念有没有办法在应用程序代码中捕获相同的事件?

我试过overiding beginRequest但不知道如何在这里捕获网址信息

override func beginRequest(with context: NSExtensionContext) {
     //TODO:
    }

1 个答案:

答案 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信息。