我应该在Android Webview中显示html数据。我可以使用包装器div标签更改正文前景,背景颜色,但我仍然在内部样式标记中定义了颜色值。
我可以使用JS函数迭代DOM并在加载页面后更改所有颜色和background-color
值吗?
最初我尝试使用正则表达式来替换值,但是显示的数据有可能是HTML,我不想破坏。
答案 0 :(得分:3)
这是一个示例脚本,用于更改具有背景颜色样式的所有“div”的页面加载背景颜色。对于需要更改背景颜色的所有其他类型的元素,需要采用这种方法。
<script type="text/javascript">
window.onload = onWindowLoad();
function onWindowLoad() {
var divs = document.getElementsByTagName("div");
for (i = 0; i < divs.length; i++) {
if (divs[i].style.backgroundColor != null && divs[i].style.backgroundColor != "") {
divs[i].style.backgroundColor = "Blue";
}
}
}
</script>
答案 1 :(得分:1)
有可能。您可以通过调用wrapper.getElementsByTagName(“*”)(包装器作为包装器元素)来获取包装器div中的所有元素。根据网站的大小,这可能会很慢。
答案 2 :(得分:0)
是的,你可以做一些涉及两步法的事情,首先你使用适当的选择器(例如“getElementById()
”和“getElementsByTagName()
”)选择所有目标元素,然后通过style属性。例如:
// Select all elements whose color must be changed.
var els = [];
els.push(document.getElementById("item1"));
els.push(document.getElementById("item2"));
els.push(document.getElementById("item3")); // And so on...
// Set their new foreground and background colors.
for (var i=0; i<els.length; i++) {
els[i].style.color = 'black'; // New foreground color.
els[i].style.backgroundColor = 'white'; // New background color.
}
另外,考虑使用jQuery这样的JavaScript库,具有丰富的选择器功能;这可以大大简化第一步。
答案 3 :(得分:0)
我强烈建议您使用wrapper.getElementsByTagName("*").style.backgroundColor = "purple";
。考虑到你的约束,这似乎是最好的解决方案。是的,getElementsByTagName("*")
会很慢,但考虑到这将在Android设备上,我相信它可以很容易地解决这个问题。