javascript - JxBrowser onScriptContextCreated 未被调用

标签 javascript java jxbrowser

我正在尝试使用 JxBrowser 设置 Java Javascript 桥。 onScriptContextCreated 方法没有被调用,我不确定为什么。

我的 Java 应用程序中嵌入了一个浏览器,当我单击按钮时,会出现一个窗口,显示“howdy”,但“hello”永远不会打印到 java 控制台。我在 onScriptContextCreated 方法中添加了调试行,但它从未被命中。

这是Java代码

    webBrowser.addScriptContextListener(new ScriptContextAdapter() {       
            @Override
            public void onScriptContextCreated(ScriptContextEvent event) {
            Browser browser = event.getBrowser();

            JSValue window = browser.executeJavaScriptAndReturnValue("window");
            System.out.println("Setting property");
            window.asObject().setProperty("sendNSCommand", new JSFunctionCallback() {

                @Override
                public Object invoke(Object... os) {
                    String command = (String) os[0];
                    System.out.println("Command from JavaScript: " + command);
                    return null;
               }
            });
        }
    });

这是我的示例网页

<html>
<head> 
    <script>
        function callMe() { 
            sendNSCommand2("howdy");
            sendNSCommand("hello");

        }

        function sendNSCommand2(x) { 
            window.alert(x);
        }
    </script>
</head>
<body>
<input type="button" value="test" onClick="callMe()" />
</body>
</html>

最佳答案

看起来此代码示例工作正常。 在本地环境中启动它后,它将“设置属性”行打印到 Java 控制台中。当我单击“测试”按钮时,会出现“howdy”对话框。当我单击此对话框中的“确定”按钮时,“来自 JavaScript 的命令:hello”行将打印到 Java 控制台中。

关于javascript - JxBrowser onScriptContextCreated 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46650705/

相关文章:

javascript - 用户登录时仅显示一次弹出窗口

javascript - 可变变量的 JS 闭包

java - Android应用无法构建-出现异常失败

Java Spark Streaming JSON解析

java - 如何在另一个 Activity 中使用视频 View 播放录制的视频

java - JxBrowser - 选择全部

javascript - 我可以为Javascript的replace()传递多个参数(模式)吗?如果没有,有什么好的替代方案吗?

javascript - Div 不完全等于具有继承值的父 div 的高度

java - JFXTextField 不适用于 JxBrowser

java - JXBrowser在Ubuntu18.04中启动失败