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 点击广告不会触发委托方法的主要内容,如果未能解决你的问题,请参考以下文章

WKWebview 导航响应方法在单击 webview 中的完成按钮时不会被调用

委托方法不会触发(为空)。使用 ARC

WKWebView 中的链接随机不可点击

UITextField 委托方法不会被触发

自定义委托方法触发正常,但值不会保留在其他方法中

实现 Scrollview 委托方法时,WKWebview Scroll 变得缓慢和滞后