4

我知道答案很可能很明显,但是我在互联网上到处寻找,但没有找到任何东西。我使用这种方法来查看用户是否按下了 WebView

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

我可以向你保证它有效。

我想做的是根据id做不同的动作

es

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

一旦代表检测到带有“hello”id的img上的“touch click”,我会做一些自定义的东西,比如[self callSomething];

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

4

3 回答 3

4

更改您的代码如下

  <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;
    }
于 2013-08-27T12:07:34.757 回答
3

UIWebView无法从 dom 元素接收 id,但您可以做的一件事是在hrefurl 中使用hello如下参数传递值:

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

你可以得到参数:

URLParser *parameter = [[URLParser alloc] initWithURLString:@"http://myurl/id=hello"];
NSString *id = [parameter valueForVariable:@"id"];
于 2013-08-27T11:43:16.327 回答
2

要实现这一点,您应该将 javascript onClick 处理程序放在您需要的任何 DOM 元素上

<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; 
    }
    ....
}

从我的角度来看有以下好处:

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

  • 与 htmlid属性无关

  • 里面的能力UIWebView忽略加载这样的链接,只是自然地执行你的 customSelector

于 2013-08-27T12:09:10.123 回答