gpt4 book ai didi

javascript - 将命令注入(inject) JavaFX 托管的 Javascript 中?

转载 作者:行者123 更新时间:2023-12-03 08:29:58 24 4
gpt4 key购买 nike

我有一个JavaFX Application我正在构建帮助我构建 Javascript 脚本。从基本意义上讲,它的左侧有一个原始文本 Pane ,右侧有一个 HTML Pane ,显示通过左侧 Pane 提供的整个 HTML 内容的呈现。我在想如何将 JavaScript 语句注入(inject) HTML;我想我可以在页面的头部或尾部放置一个 WebSocket,它只接受传递给 exec 的文本行。这看起来合适吗,还是有更简单的方法?

最佳答案

有一个更简单的方法。您可以调用executeScript在您的 webview 的 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 also exposes some data in Java such as document or history, and they are more efficient in Java than in 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')" );

关于javascript - 将命令注入(inject) JavaFX 托管的 Javascript 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33381561/

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