2015-07-30 3 views
0

У меня есть UIWebView, отображающий некоторый контент, содержащий ссылки. UIWebView автоматически определяет их и выделяет/подчеркивает их. Есть ли способ изменить стиль? Я хотел бы выбрать другой цвет/установить некоторый CSS для применения ко всем ссылкам.Укладка гиперссылок в UIWebView

Я могу изменить HTML на лету, когда он загружается, изменяя строку, но возможность изменить ее через JS будет идеальным, поскольку я уже делаю это для шрифтов (например, document.body.style.fontFamily = мой шрифт ').

ответ

1

Вы можете создавать ссылки внутри страницы, используя простые стандартные правила CSS. Для того, чтобы удалить подчеркивание и изменить цвет ссылки, например, красный, добавьте следующий стиль CSS:

a { 
    text-decoration: none; 
    color: red; 
} 

UIWebView имел некоторые специфические стили, которые можно манипулировать, используя нестандартные свойства CSS. Вы можете найти полный список here.

Если вам нужно применить этот стиль к HTML-странице, которую вы не контролировали, вам нужно ввести код JavaScript на целевую страницу из собственного кода Objective-C.

Итак, прежде всего, давайте писать код JavaScript, что изменить стиль <a> элемента с id «urlID»:

var link = window.document.getElementById('urlId'); 
link.style['text-decoration'] = 'none'; 
link.style.color = 'red'; 

Затем нам нужно сказать родной UIWebView выполнить этот JavaScript кода, когда веб-страница закончила загрузку (таким образом, мы уверены, что элемент DOM, который мы ищем, есть). Для этого мы можем использовать протокол UIWebView UIWebViewDelegate и его метод webViewDidFinishLoad:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *javaScriptCodeToExecute = @"var link = window.document.getElementById('urlId'); link.style['text-decoration'] = 'none'; link.style.color = 'red';"; 
    [_webView stringByEvaluatingJavaScriptFromString:javaScriptCodeToExecute]; 
} 

я положил код JavaScript внутри строки переменной javaScriptCodeToExecute и я сказал к UIWebView, чтобы выполнить его, используя метод stringByEvaluatingJavaScriptFromString:.

+0

Спасибо, но как мне вставить это на страницу, которую я не контролирую? например Я загружаю google.com в UIWebView и хочу стилить ссылки. –

+0

Привет. Просто добавлено объяснение того, как вводить пользовательский код JavaScript внутри внешней веб-страницы, загруженной в UIWebView. Дайте мне знать, что вы думаете. – Andrea

+0

Спасибо. Это тоже не работает. Не ссылки становятся красными, а ссылки по-прежнему имеют одинаковый стиль. Я думаю, что это может быть связано с тем, что Apple делает ссылку на обнаружение после загрузки веб-представления и поэтому переоценивает наш стиль. –

Смежные вопросы