如何快速获取当前超连接的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 的属性?
// 判断是否带_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 的属性?
解决方案 »
- Xcode做一个下载管理器,需要哪些方面的知识,难度如何
- 求救啊,cocos2d一个拼图游戏问题
- 有熟悉iOS开发的不?
- Cocos2d-x游戏引擎实战开发炸弹超人(TexturePacker打包、地图、LevelHelper关卡)
- 关于storyboard 的segue返回方法
- ios中,用FMDB第三方内裤怎样创建具有主从关系的两张表?能给个demo最好
- IOS开发者注册的问题
- 请问 Fix issue 证书为什么下载错
- 使用不了isEqualToString
- 关于网络请求内存泄露问题
- 想看看RealVNC Viewer for iPhone, iPad and iPod touch源代码
- 问个数据库的问题
虽然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];
}