我知道答案很可能是非常明显的,但我在互联网上无处不在,我找不到任何东西。我使用此方法来查看用户是否按下了WebView
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; {
我可以向你保证它有效。
我想要做的是根据id
进行不同的操作ES
<a id="hello" href="..."><img src="..." /></a>
一旦代理人在img上用“hello”id检测到“触摸点击”,我会做一些自定义的东西,比如[self callSomething];
你能告诉我如何使用示例代码吗?感谢
答案 0 :(得分: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;
}
答案 1 :(得分:3)
UIWebView
无法从dom元素接收id,但您可以做的一件事就是在href
url中使用参数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"];
答案 2 :(得分:2)
要实现这一点,你应该将javascript onClick处理程序放到你需要的任何DOM元素上
f.e
<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