iOS WKWebview如何检测我何时点击<a>标签内的图像

Posted

技术标签:

【中文标题】iOS WKWebview如何检测我何时点击<a>标签内的图像【英文标题】:iOS WKWebview how to detect when I click on an image inside of <a> tag 【发布时间】:2016-09-30 02:51:07 【问题描述】:

我正在尝试在我的应用 (Objective-C) 中将我的 UIWebView 更改为 WKWebView。 我看到WKWebView 包含标签“a”,标签“a”内部包含标签“image”:

<a href="http://click.adzcore.com/xyz"><img src="http://www.abc.xyz/smart/images/bnr/yyy.png"   border="0"  onclick="_gaq.push(['_trackPageview','/smart/count/frognote']);"></a>

我想检测用户何时点击图片,所以我这样做了:

- (void)webView:(WKWebView )webView decidePolicyForNavigationAction:(WKNavigationAction )navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 

    if (navigationAction.navigationType == WKNavigationTypeLinkActivated) 
        NSURL *url = navigationAction.request.URL;
        [[UIApplication sharedApplication] openURL:url];
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    
    decisionHandler(WKNavigationActionPolicyAllow);

但是这段代码不正确,因为WKNavigationTypeLinkActivated 在用户点击图片时没有被捕获。

【问题讨论】:

标签 允许点击功能有一个允许点击功能的嵌套图像,那么你将如何决定点击哪个?你能试着只保留图像吗?然后使用navigationAction请求url结合WKNavigationTypeOther验证图片是否被点击。 @NeverHopeless:感谢您的理想,但我无法控制 html 代码,因为它是从服务器返回的。我尝试使用WKNavigationTypeOther,但它不正确,因为虽然您没有单击图像,但仍会调用事件单击。 对于测试,一旦你得到这个 html 尝试按照我的建议替换 a 标签(并确保只替换所需的标签:))并首先查看它是否有效,然后你可以讨论服务器团队的这个问题,如果没有必要,请删除 a 部分.. @NeverHopeless:谢谢,我认为这很理想,但现在我无法联系服务器团队:( 好的navigationAction.navigationType是什么你收到的点击? 【参考方案1】:

经过研究,我找到了解决问题的方法。 我不使用 WKNavigationTypeLinkActivated 来捕捉点击图像的事件。

我的解决方案:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler 

    if ([navigationAction.request.URL.relativeString hasPrefix:@"http://click.adzcore.com/"]) 
        NSURL *url = navigationAction.request.URL;
        [[UIApplication sharedApplication] openURL:url];
        decisionHandler(WKNavigationActionPolicyCancel);
        return;
    

    decisionHandler(WKNavigationActionPolicyAllow);

我的任务没问题 :)

【讨论】:

以上是关于iOS WKWebview如何检测我何时点击<a>标签内的图像的主要内容,如果未能解决你的问题,请参考以下文章

检测 WKWebView 何时完成加载

如何检测 amp 页面的 url 何时随 WKWebview 更改

每次检测 WKWebView 何时完成加载

检测用户何时向左或向右滑动以在 WKWebView 上前后移动

检测 WKWebview 中的按钮点击

如何使用 iOS WKWebView 注入 JavaScript 回调来检测 onclick 事件?