WKWebView 点击广告不会触发委托方法
Posted
技术标签:
【中文标题】WKWebView 点击广告不会触发委托方法【英文标题】:WKWebView tapping on a ad doesn't fire delegate method 【发布时间】:2018-11-19 14:19:26 【问题描述】:我正在使用WKWebView
,并且我有导航(请求/响应)的委托方法,并且一切正常。出于某种原因,有些广告根本不会触发该功能。知道为什么吗?我什至无法检查 URL 以了解发生了什么。
我只得到WKContentView[@] set up: @ pid: @ MACH_PORT
如果得到一个带有标题的弹出菜单,则在模拟器上:
JavaScript 和选项:打开/取消
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
我可以在配置中使用一些东西吗?
谢谢
【问题讨论】:
你可以添加观察者webView.addObserver(self, forKeyPath: "URL", options: [.new, .old], context: nil)
然后override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) print(change?[.newKey],change?[.oldKey])
由于某种原因它没有被观察者触发,我尝试了不同的解决方案来触发它
@canister_exister 我设法通过类似的解决方案获得了网址,因此感谢您的帮助。现在我只需要弄清楚为什么它没有触发委托方法。
decidePolicyFor 并不总是适用于重定向
【参考方案1】:
我认为您应该在名为 window.webkit.messageHandlers.yourMethodName.postMessage("something") 的 html 文件中设置的方法中添加一些内容
【讨论】:
以上是关于WKWebView 点击广告不会触发委托方法的主要内容,如果未能解决你的问题,请参考以下文章