#html #objective-c
#HTML #objective-c
Вопрос:
Я пишу на objective-C. У меня есть WebView
и локальный файл index.html имеет
<a href='http://www.google.com' name="666">
Как я могу получить name
атрибут?
Спасибо!
Ответ №1:
Это зависит от того, когда / с помощью чего вам нужно получить имя. Если вам нужно имя, когда кто-то нажимает на ссылку, вы можете настроить некоторый JavaScript, который запускается при нажатии на ссылку (обработчик onclick). Если у вас есть только строка html, вы можете использовать регулярные выражения для синтаксического анализа документа и извлечения всех атрибутов name. Хорошей библиотекой регулярных выражений для 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, чтобы добавить атрибут name к URL в виде хэштега, а затем перехватить запрос и проанализировать его в -webView:shouldStartLoadWithRequest:navigationType:
методе вашего делегата UIWebView. Это выглядело бы примерно так:
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
}
Комментарии:
1. Мне нужно имя, когда кто-то нажимает на ссылку. Но я не знаю, как использовать JavaScript. Не могли бы вы написать какой-нибудь пример, пожалуйста? Спасибо!