Safari应用程序扩展如何捕获beforeNavigate事件?

4

在旧版Safari扩展程序中,我们使用全局JavaScript来处理beforeNavigate事件。但是,在新的Safari应用扩展概念中,是否有一种方法可以在应用程序代码中捕获相同的事件?

我尝试过覆盖beginRequest,但不确定如何在此处捕获URL信息。

override func beginRequest(with context: NSExtensionContext) {
     //TODO:
    }
1个回答

0

您可以在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))")
    }
}

注意:该事件包含您所需的URL信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接