我想自定义我正在加载的网站的外观,所以我创建了一个小的 test.css
文件,除了更改所有表格行的外观外什么都不做:
tr {
height: 22px;
background-image: url("test.png");
}
如何让 WebEngine 加载此文件并将页面自己的 CSS 规则替换为我的? 此外,我希望能够加载页面特定的 css 文件,而不是为所有页面加载一个巨大的文件。
我找到了this page , 但它只展示了如何遍历 DOM 并手动为所需元素分配新样式。这当然不是我想要的。相反,我希望浏览器将我的文件用作“用户默认值”。
感谢任何帮助:)
最佳答案
首先,我必须声明,我希望您知道自己在做什么,因为这些事情会严重损坏网站。 因此,您可以执行以下操作:
您从 WebEngine
中获取 Document
,检索 head
元素并将 style
子元素添加到它,包含您要添加的样式表的 src 位置。
Document doc = webView.getEngine().getDocument();
URL scriptUrl = getClass().getResource(pathToAttachedDocument); // pathToAttachedDocument = CSS file you want to attach
String content = IOUtils.toString(scriptUrl); // Use Apache IO commons for conveniance
Element appendContent = doc.createElement("style");
appendContent.appendChild(doc.createTextNode(content));
doc.getElementsByTagName("head").item(0).appendChild(appendContent);
顺便说一句,JavaScript可以用类似的方式添加,只是'script'而不是'style'
关于JavaFx WebEngine - 用(本地)文件覆盖网站的样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751342/