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

cha*_*unv 5 objective-c ios wkwebview watchkit watchos

我想改变我UIWebViewWKWebView在我的应用程序(Objective-C)。我看到WKWebView包含标签“a”和标签“a”内部包含标签“图像”:

<a href="http://click.adzcore.com/xyz"><img src="http://www.abc.xyz/smart/images/bnr/yyy.png" width="320" height="50" border="0" alt="+alt[n]+" onclick="_gaq.push(['_trackPageview','/smart/count/frognote']);"></a>
Run Code Online (Sandbox Code Playgroud)

我想检测用户点击图像的时间,所以我这样做:

- (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);
}
Run Code Online (Sandbox Code Playgroud)

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

cha*_*unv 5

经过研究,我找到了解决我问题的方法。我不使用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);
}
Run Code Online (Sandbox Code Playgroud)

我的任务没问题:)