JavaFx WebEngine - 用(本地)文件覆盖网站的样式表

标签 java html css javafx-8 javafx-webengine

我想自定义我正在加载的网站的外观,所以我创建了一个小的 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/

相关文章:

java - 拆分以大写开头的任何单词和末尾的每个数字

html - 子元素离开父元素

javascript - jquery:更改输入标签颜色

html - 不会溢出-滚动即可工作

CSS:100% 字体大小 - 什么的 100%?

javascript - 使用 Selenium 在 IE10 中移动到元素

java - 需要帮助,无法用 Java 解释这部分代码

java - 为什么要隐藏类实现?

java - sbt 在启动时抛出错误

javascript - AngularJS 元素在几分之一秒内出现