我有一个UIWebView显示一些包含链接的内容。 UIWebView会自动检测这些并突出显示/加下划线。有没有办法改变造型?我想选择一种不同的颜色/设置一些CSS来应用于所有链接。
我可以在加载时通过修改字符串来动态修改HTML但是能够通过JS更改它将是理想的,因为我已经在为字体做了这些(例如document.body.style.fontFamily = '我的字体')。
答案 0 :(得分:2)
您可以使用简单的CSS标准规则设置页面内的链接的样式。要删除下划线并将链接的颜色更改为例如红色,请添加以下CSS样式:
a {
text-decoration: none;
color: red;
}
UIWebView
有一些可以使用非标准CSS属性操作的特定样式。您可以找到完整列表here。
如果您需要将此样式应用于您无法控制的HTML页面,则需要从原生Objective-C代码向目标页面注入JavaScript代码。
首先,让我们编写一个JavaScript代码,用<a>
&#34; urlID&#34;来改变id
元素的样式:
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:
方法执行它。