iOS 如何知道 html5 按钮是否被点击加载到 UIWebView

iOS how to know if the html5 button was clicked loaded on an UIWebView

我有一个带有 UIWebView 的 iOS 应用程序,我需要从服务器端接收 href url,然后显示来自该 href 的 HTML5 网页在我的 UIWebView 中:

MyViewController *myVC = [[MyViewController alloc] init];
myVC.url = serverSideResponse.href;
[self.navigationController presentViewController:myVC animated:YES completion:nil];

在 MyViewController.m 中,我有这个:

_webView = [[UIWebView alloc] initWithFrame:myFrame];
[self.view addSubView:_webView];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[_webView loadRequest:request];

所以网页来自服务器端,我希望我的 iOS app/webview 知道是否在该页面上单击了按钮。更具体地说,如果单击该按钮,那么我将关闭我的 webview(意味着 removeFromSuperView)。

现在我能看到的是,当我检查那个网页的源代码时,我知道了按钮 ID。

我收到的 url 是:https://api.uber.com/v1/surge-confirmations/edbfdd9a-276b-4b85-b3f4-5a0c948a17fe。当我在我的网络视图中加载它时,它有一个按钮,当我点击它时没有任何反应,只有控制台记录了点击事件并且请求是:https://api.uber.com/v1/surge-confirmations/edbfdd9a-276b-4b85-b3f4-5a0c948a17fe# <--有一个额外的 #.

但是当我把 url 放在桌面浏览器中显示它并单击按钮时,它可以按预期重定向到下一个 url (https://www.uber.com)。

请指教,谢谢!

感谢@Wain 和@palme,我找到了其中一种 UIWebView 委托回调方法

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

可以做到这一点。

参数requestnavigationType可以告诉你什么navigationType触发了什么请求。