我怎样才能从链接中获取名称?

时间:2011-04-25 06:02:20

标签: html objective-c

我写的是Objective-C。 我有WebView,本地文件index.html有

<a href='http://www.google.com' name="666">

如何获取name属性?

谢谢!

1 个答案:

答案 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
}