UIWebView并点击链接

我知道,最有可能的答案是非常明显的,但我已经在互联网上无处不在,我还没有find任何东西。 我使用这个方法来查看用户是否按下了WebView

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

我可以向你保证,它的工作。

我想要做的是根据ID做出不同的行动

ES

 <a id="hello" href="..."><img src="..." /></a> 

一旦代表检测到“触摸点击”与“你好”身份证的IMG,我会做一些自定义的东西,如[self callSomething];

你能告诉我如何使用示例代码做到这一点? 谢谢

更改您的代码如下

  <a id="hello" href='didTap://image><img src="..." /></a> 

并在委托方法尝试像这样。

  - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *absoluteUrl = [[request URL] absoluteString]; NSString*temp=[absoluteUrl stringByReplacingOccurrencesOfString:@"@" withString:@""]; if ([temp isEqualToString:@"didTap://image"]) { [self your method]; } return YES; } 

UIWebView不能从dom元素接收id,但是你可以做的一件事就是在href url中传递值hello like:

 <a id="hello" href="//myurl?id=hello"><img src="..." /></a> 

你可以得到参数为:

 URLParser *parameter = [[URLParser alloc] initWithURLString:@"http://myurl/id=hello"]; NSString *id = [parameter valueForVariable:@"id"]; 

为了达到这个目标,你应该把javascript onClick处理程序放到你需要的任何DOM元素上

FE

 <a onClick="callNativeSelector('doSomething');" ... > </a> javascript function callNativeSelector(nativeSelector) { // put native selector as param window.location = "customAction://"+nativeSelector; } 

在UIWebView委托的方法忽略像上面的链接

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ([[request.URL scheme] isEqualToString:@"customAction"]) { //Fetching image URL NSLog(@"Custom selector is %@", [request.URL host]) ... // Always return NO not to allow `UIWebView` process such links return NO; } .... } 

我的观点有好处:

  • 不与像<a href=...>特定的DOM元素相关联,您可以将此类处理程序分配给任何您需要的

  • 不与html id属性关联

  • UIWebView内部的能力忽略加载这样的链接,只需执行你的customSelector