我写的是Objective-C。
我有WebView
,本地文件index.html有
<a href='http://www.google.com' name="666">
如何获取name
属性?
谢谢!
答案 0 :(得分:1)
这取决于何时/通过您需要获取名称。如果您在有人点击链接时需要该名称,则可以设置一些在单击链接时运行的JavaScript(onclick处理程序)。如果您只有html字符串,则可以使用正则表达式来解析文档并提取所有名称属性。 Objective-C的一个很好的正则表达式库是RegexKit(或同一页面上的RegexKitLite)。
从链接中解析name属性的正则表达式如下所示:
/<a[^>]+?name="?([^" >]*)"?>/i
编辑:当有人点击它时,用于从链接中获取名称的javascript看起来像这样:
function getNameAttribute(element) {
alert(element.name); //Or do something else with the name, `element.name` contains the value of the name attribute.
}
这将从onclick
处理程序调用,类似于:
<a href="http://www.google.com/" name="anElementName" onclick="getNameAttribute(this)">My Link</a>
如果您需要将名称返回到Objective-C代码,您可以编写onclick函数以使用hashtag形式将name属性附加到url,然后捕获请求并将其解析到UIWebView中委托的-webView:shouldStartLoadWithRequest:navigationType:
方法。这将是这样的:
function getNameAttribute(element) {
element.href += '#'+element.name;
}
//Then in your delegate's .m file
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
NSArray *urlParts = [[request URL] componentsSeparatedByString:@"#"];
NSString *url = [urlParts objectAtIndex:0];
NSString *name = [urlParts lastObject];
if([url isEqualToString:@"http://www.google.com/"]){
//Do something with `name`
}
return FALSE; //Or TRUE if you want to follow the link
}