gpt4 book ai didi

java - 在加载时部分替换 WebView 内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:43:51 26 4
gpt4 key购买 nike

我想做的是用我自己的 HTML 内容替换网页 HTML 内容的某些部分(当前正在 WebView 引擎中加载)。

作为一个简单的例子——我想将每个加载的页面正文的背景颜色替换为红色。这意味着我需要用我自己的值添加或替换现有的 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 也提供了一个很好的方法来进行后期更改(当页面加载时),但我需要为我的“load-while”解决方案情况下,这样 WebView 就不会重复渲染页面两次(更改前后)。

最佳答案

the WebEngine document property 添加监听器以及何时更改:

更新

要拦截正在运行的 html 源代码并可能在它到达 WebView 之前对其进行修改,您可以 implement您自己的 UrlConnection 处理程序。这是我过去能够成功实现的。参见 option 3 of my longish forum post在 id jsmith 下获取一些背景信息和有关如何执行此操作的指示。这样做的关键是设置 URL.setURLStreamHandlerFactory(myHandlerFactory) .

关于java - 在加载时部分替换 WebView 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com