Частично заменить содержимое WebView во время его загрузки

То, что я хочу сделать, это заменить некоторые части HTML-контента веб-страницы (которые в данный момент загружаются внутри механизма WebView) моим собственным HTML-контентом.

В качестве простого примера я хочу заменить цвет фона каждой загруженной страницы на КРАСНЫЙ. Это означает, что мне нужно будет добавить или заменить существующий атрибут 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предложил хороший способ внесения пост-изменений (при загрузке страницы), но мне нужно именно "загрузить -while» для моего случая, чтобы WebView не выполнял двойную работу по рендерингу страницы дважды (до и после изменений).

8
задан Mikle Garin 27 June 2012 в 15:45
поделиться