- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
使用旧的 safari 扩展,我们有全局 javascript 来处理 beforeNavigate 事件,但使用新的 safari app extension概念 有什么方法可以在应用程序代码中捕获相同的事件吗?
我试过overiding beginRequest
但不确定如何在此处捕获 url 信息
override func beginRequest(with context: NSExtensionContext) {
//TODO:
}
最佳答案
您可以在 safari 应用程序扩展中使用脚本文件,该脚本会在 safari 页面加载之前自动注入(inject)。
脚本从 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 信息。
关于swift - Safari 应用程序扩展如何捕获 beforeNavigate 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44916917/
使用旧的 safari 扩展,我们有全局 javascript 来处理 beforeNavigate 事件,但使用新的 safari app extension概念 有什么方法可以在应用程序代码中捕获
我正在尝试使用 WatiN 更改用户代理字符串通过修改“导航前”事件中的标题来构建框架。我认为我真的很接近解决方案,但由于某种原因,在访问 url 大约一秒钟后,我被重定向到一个包含以下代码的空白页面
据我了解,WPF的Brwoser控件是ie Active-X控件的包装器。后者有一个 BeforeNavigate2 方法,而我在 WPF WebBrowser 控件中找不到它。有什么办法可以解决这个
我正在开发一个 safari 应用程序扩展。我必须像在旧的 Safari JS 扩展中一样收听“beforeNavigate”事件,我们可以使用 Safari's Windows & Tabs API
我是一名优秀的程序员,十分优秀!