我有一个 UIWebView,其中某些部分有 <a href="" > <img src="" </a>
在里面。我已经向此 UIWebView 添加了 UITapGesture ,所以我想要的基本上是当用户点击图像时,它不会将您带到指向它的链接,而是执行某些操作。我在阻止图像转到它指向的超链接时遇到问题。任何想法?我尝试注入(inject) javascript,以便当用户点击图像时将 href 更改为一些虚假链接,然后点击:
- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
我检查了请求 URL 是否与我拥有的虚拟地址匹配。但是,这不起作用,由于某种原因,使用以下命令更改 href 链接:
NSString *stripLink = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.href=%@", pt.x, pt.y, @"http://www.fakeurl.com"];
if ([self stringByEvaluatingJavaScriptFromString:stripLink] != nil){
NSString *testHref = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).parentNode.href", pt.x, pt.y];
NSLog(@"FINAL HREF IS %@", [self stringByEvaluatingJavaScriptFromString:testHref]);
}
还有其他想法吗?
最佳答案
如果您可以控制 HTML 源(听起来您确实可以控制?),那么您可以更改 href 以使用自定义 URI 方案,例如photo://然后您可以执行以下操作:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ([[url scheme] isEqualToString:@"photo"])
{
// Custom Handling Goes Here
return NO; // Stops the link being executed by UIWebView
} else
return YES;
}
但是,如果您无法控制 HTML 源代码,那么您可能需要采取一些更加狡猾的措施。例如。您可以检查路径的末尾并查看它是否是图像(jpg、png 等...)
关于iphone - WebView 和覆盖链接的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8872309/