JavaFX 8 WebEngine:如何在 java 中将 console.log() 从 javascript 获取到 System.out?

2024-03-23

我使用 JavaFX 和 JavaFX WebEngine 中的 javascript 引擎来开发应用程序。我想从 javascript 获得反馈以进行调试。 WebEngine 内的控制台输出会发生什么情况?有什么方法可以访问它,或者重定向到 java 中的 System.out 吗?


以下代码重定向console.log() to JavaBridge.log():

import netscape.javascript.JSObject;

[...]

public class JavaBridge
{
    public void log(String text)
    {
        System.out.println(text);
    }
}

// Maintain a strong reference to prevent garbage collection:
// https://bugs.openjdk.java.net/browse/JDK-8154127
private final JavaBridge bridge = new JavaBridge();

[...]

webEngine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) ->
{
    JSObject window = (JSObject) webEngine.executeScript("window");
    window.setMember("java", bridge);
    webEngine.executeScript("console.log = function(message)\n" +
        "{\n" +
        "    java.log(message);\n" +
        "};");
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX 8 WebEngine:如何在 java 中将 console.log() 从 javascript 获取到 System.out? 的相关文章

随机推荐