私がやりたいことは、Web ページの HTML コンテンツ (現在 WebView エンジン内にロードされている) の一部を独自の HTML コンテンツに置き換えることです。
簡単な例として、ロードされたすべてのページ本体の背景色を赤に置き換えたいとします。つまり、既存のボディ 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 がページをレンダリングする二重のジョブを実行しないように、私の場合は正確に「読み込み中」のソリューションが必要です (前と前)。変更後)。