webview – JavaFX 8 WebEngine:如何从java到console.log()从java到System.out?

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

解决方法

以下代码将console.log()重定向到JavaBridge.log():
import netscape.javascript.JSObject;

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

[...]

webEngine.getLoadWorker().stateproperty().addListener((observable,oldValue,newValue) ->
{
    JSObject window = (JSObject) webEngine.executeScript("window");
    JavaBridge bridge = new JavaBridge();
    window.setMember("java",bridge);
    webEngine.executeScript("console.log = function(message)\n" +
        "{\n" +
        "    java.log(message);\n" +
        "};");
});

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量