Mik*_*rin 8 java javafx webview
我想要做的是用我自己的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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在一些Oracle文档中有一个很好的例子,但是自上次JavaFX和站点更新以来我根本找不到它.也许任何人都有旧文档的链接......
注:也jewelsea提供了一个很好的方法,使后改变(在加载页面时),但我需要我的情况正是"负载,而"解决方案,这样的WebView不会做双重任务的渲染页面两次(前变更后).
将侦听器添加到WebEngine文档属性以及何时更改:
更新
要拦截飞行中的html源并可能在它到达WebView之前对其进行修改,您可以实现自己的UrlConnection处理程序.这是我过去成功实现的目标.请参阅id jsmith下我的长篇论坛帖子的选项3,了解一些背景信息以及如何执行此操作的指示.这样做的关键是设置URL.setURLStreamHandlerFactory(myHandlerFactory).
| 归档时间: |
|
| 查看次数: |
3743 次 |
| 最近记录: |