我正在构建JavaFX Application以帮助我构建Javascript脚本。从基本的意义上讲,它左侧是原始文本窗格,右侧是HTML窗格,显示通过左窗格提供的整个HTML内容的呈现。我在想如何将JavaScript语句注入HTML中;我想我可以在页面的头部或尾部放置一个WebSocket,只接受传递给exec
的文本行。这看起来是否合适,还是有更简单的方法?
答案 0 :(得分:1)
有一种更简单的方法。 您可以致电executeScript在您的网页浏览engine中运行javascript:
web.getEngine().executeScript( "document.body.textContent = 'FooBar' " );
executeScript函数将返回结果为JSObject,原语和简单对象除外。 通过此访问,您可以获取和设置全局变量,如下所示:
JSObject window = (JSObject) engine.executeScript("window");
window.setMember( "foo", "bar" ); // Set window.foo to 'bar'
window.setMember( "console", new MyConsoleInJava() ); // You can also set Java objects!
WebEngine还公开了Java中的一些数据,例如document或history, 它们在Java中比在JavaScript中更有效。
如果设置onAlert等属性,您甚至可以运行交互式脚本:
webView.getEngine().setOnAlert( ( event ) -> {
Alert alert = new Alert( AlertType.INFORMATION );
alert.setTitle( "Webpage says" );
alert.setContentText( event.getData() );
alert.showAndWait();
});
webView.getEngine().executeScript( "alert('Mea')" );