如何截取IOS上的UIWebview内的Button点击?

B K*_*B K 31 javascript iphone onclick uiwebview ios

我有一个HTML表单,其中包含我在UIWebview中打开的某些字段.点击特定按钮后,我想进行应用操作.

我现在使用的方法是点击按钮,我将页面重定向到虚拟URL.我使用委托方法"shouldStartLoadWithRequest"嗅探URL并停止重定向.然后,我做我的自定义事件(捕获图像和上传),然后继续.这似乎是一个丑陋的黑客.无论如何,我可以直接挂钩按钮点击事件而不是页面重定向?

更新 当按钮单击调用JS函数时,似乎无法设置要触发的委托方法.唯一的方法是使用上面提到的URL嗅探方法.这个已经由joern在下面详细解释过,所以我会接受他的回答.

joe*_*ern 59

您可以执行以下操作:

在您的HTML中

<a class="yourButton" href="inapp://capture">Button Text</a>
Run Code Online (Sandbox Code Playgroud)

在您的UIWebViewDelegate中

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
   if ([request.URL.scheme isEqualToString:@"inapp"]) {
      if ([request.URL.host isEqualToString:@"capture"]) {
         // do capture action
      }  
      return NO;
   }  
   return YES;
}
Run Code Online (Sandbox Code Playgroud)

我将"捕获"添加到按钮的URL中,以便您可以区分应该触发不同操作的几个按钮(如果您愿意):

  • 哦,是的,等等.在上面的例子中,在捕获动作后只返回"YES"而不是"NO".然后表格将正常提交,好像什么都没发生一样.无需调用javascript函数. (2认同)