问题描述
我有一个UIWebView,它显示一些包含链接的内容。 UIWebView自动检测到这些并突出显示/加下划线。 有没有办法改变样式? 我想选择其他颜色/设置一些CSS来应用于所有链接。
我可以在加载时通??过修改字符串来动态修改HTML,但是能够通过JS对其进行更改将是理想的,因为我已经对字体进行了修改(例如document.body.style.fontFamily ='my font') 。
1楼
Andrea
2
2015-07-30 16:09:00
您可以使用简单的CSS标准规则来设置页面内链接的样式。 要删除下划线并将链接的颜色更改为例如红色,请添加以下CSS样式:
a {
text-decoration: none;
color: red;
}
UIWebView具有一些特定的样式,可以使用非标准CSS属性对其进行操作。
您可以找到完整列表。
如果需要将此样式应用于不受控制的HTML页面,则需要从本地Objective-C代码向目标页面注入JavaScript代码。
因此,首先,让我们编写JavaScript代码,以更改id “ urlID”的<a>元素的样式:
var link = window.document.getElementById('urlId');
link.style['text-decoration'] = 'none';
link.style.color = 'red';
然后,当网页加载完成时,我们需要告知本机UIWebView执行此JavaScript代码(通过这种方式,我们可以确保所搜索的DOM元素在那里)。
为此,我们可以使用UIWebView UIWebViewDelegate协议及其方法
- (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使用方法执行它。