我想做的事情是用我自己的 HTML 内容替换网页 HTML 内容的某些部分(当前正在 WebView 引擎中加载)。
作为一个简单的例子 - 我想将每个加载的页面正文的背景颜色替换为 RED。这意味着我需要用我自己的值添加或替换现有的 body bgcolor 属性。我应该怎么做才能做到这一点?
下面是基于 JavaFX WebView 组件的基本浏览器代码:
public class BrowserTest extends Application
{
public static void main ( String[] args )
{
launch ( args );
}
public void start ( Stage stage )
{
stage.setTitle ( "WebView" );
Browser browser = new Browser ();
browser.load ( "http://google.com" );
Scene scene = new Scene ( browser );
stage.setScene ( scene );
stage.show ();
}
public class Browser extends Region
{
final WebView browser;
final WebEngine webEngine;
public Browser ()
{
super ();
browser = new WebView ();
webEngine = browser.getEngine ();
getChildren ().add ( browser );
}
public void load ( String url )
{
webEngine.load ( url );
}
private Node createSpacer ()
{
Region spacer = new Region ();
HBox.setHgrow ( spacer, Priority.ALWAYS );
return spacer;
}
protected void layoutChildren ()
{
double w = getWidth ();
double h = getHeight ();
layoutInArea ( browser, 0, 0, w, h, 0, HPos.CENTER, VPos.CENTER );
}
protected double computePrefWidth ( double height )
{
return 750;
}
protected double computePrefHeight ( double width )
{
return 500;
}
}
}
在一些 Oracle 文档中有这种技术的一个很好的例子,但自从上次 JavaFX 和站点更新以来,我根本找不到它。也许有人有旧文档的链接......
注意: jewelsea还提供了一种进行后期更改(加载页面时)的好方法,但我需要完全“加载时”解决方案来解决我的情况,这样 WebView 就不会两次渲染页面(之前和之前)更改后)。