如何快速获取当前超连接的target属性?(UIWebView)

iOS 码拜 6年前 (2015-05-09) 193次浏览 0个评论
 

如何快速获取当前超连接的target属性?

我想获取当前被点击的超连接的target属性 现在的处理方法如下:
// 判断是否带_blank标记超连接
-(BOOL) isBlankLink:(UIWebView*) webView HttpRequest:(NSURLRequest*) request
{
    if(webView == nil || request == nil)
    {
        return NO;
    }
    
    NSURL* URL = [request URL];
    NSString* URLString = [URL absoluteString];
    
    
    //NSLog(@”对比当前连接是否带有_blank标记”);
    //NSLog(@”——————————–当前源网址:%@”, URLString);
    
    int aLen = [[webView stringByEvaluatingJavaScriptFromString:@”document.getElementsByTagName(“a”).length”] intValue];
    for (int n = 0; n < aLen; n ++)
    {
        // 获取href js脚本串
        NSString* html = [NSString stringWithFormat:@”document.getElementsByTagName(“a”)[%d].href”, n];
        
        // 获取href 
        NSString* href = [webView stringByEvaluatingJavaScriptFromString:html];
        // NSLog(@”索号:%d 网址:%@”, n,href);
        
        if ([URLString isEqualToString:href])
        {
            //NSLog(@”————————找到与当前连接相同网址, 开始测试是否带 _blank标记————————-“);
            html = [NSString stringWithFormat:@”document.getElementsByTagName(“a”)[%d].target”, n];
            NSString* target = [webView stringByEvaluatingJavaScriptFromString:html];
            
            if([target isEqualToString:@”_blank”])
            {
                // NSLog(@”———————————————-找到_blank标记 返回 yes”);
                
                return YES;
            }
            else
            {
                // NSLog(@”———————————————–没有找到_blank标记”);
                break;
            }
        }
    }
    
    return NO;
}

这种依次跟超连接集合中元素比较的方法很慢。。影响打开网页 谁能提供一个更正确的方法  让我获取target 的属性?

都不知道吗?》 连顶的都没有。
35分
stringByEvaluatingJavaScriptFromString很耗时间的,你这样过于频繁的调用当然慢啦。

以下是我们用来解决UIWebview不能打开””_blank””链接的方法,你参考下吧。
虽然JS我不懂,但我想以下的代码你稍作修改就可以用了。

 (void)webViewDidFinishLoad:(UIWebView *)webView {
        NSString *js = @"\
        var d = document.getElementsByTagName(""a"");\
        for (var i = 0; i < d.length; i++) {\
            if (d[i].getAttribute(""target"") == ""_blank"") {\
                d[i].removeAttribute(""target"");\
            }\
        }\
        ";

        [webView stringByEvaluatingJavaScriptFromString:js];
}
15分
這個沒解
只能一個一個找….

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明如何快速获取当前超连接的target属性?(UIWebView)
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!