1

JxBrowser 6.1 の JavaScript Java Bridge API に問題があると思います。Javascript で Java クラスのメソッドを呼び出す非常に単純なコードを試しました。ここにコードがあります。Java では、javajavascriptwindowオブジェクトのプロパティとしてEventsクラスのインスタンスに設定され、html が読み込まれます。html では、クラスCloseのメソッドを呼び出すだけです。Eventsしかし、Closeボタンをクリックすると、JavaClose関数が呼び出されず、コンソールに JxBrowser から次のようなメッセージが表示されます。

キャッチされていない TypeError: 未定義のプロパティ 'Close' を読み取ることができません

これは、オブジェクトjavaのプロパティwindowが定義されていないことを意味します。

Main.java:

public class Main extends Application {

    private Browser browser;

    public static void main(String[] args) {

        launch(args);

    }

    @Override
    public void start(Stage primaryStage) {

        Platform.setImplicitExit(false);

        browser = new Browser();

        JSValue window = browser.executeJavaScriptAndReturnValue("window");

        window.asObject().setProperty("java", new Events());

        BrowserView browserView = new BrowserView(browser);

        StackPane pane = new StackPane();

        pane.getChildren().add(browserView);

        Scene scene = new Scene(pane, 330, 470);

        primaryStage.initStyle(StageStyle.UNDECORATED);

        primaryStage.setScene(scene);

        primaryStage.show();

        browser.loadURL(Main.class.getResource("templates/simple.html").toExternalForm());

    }

}

class Events {

    public void Close() {

        System.out.println("close button clicked");

    }

}

simple.html:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
    <button id="Close">Close</button>
    <script>
        document.getElementById('Close').onclick = function () {
            window.java.Close();
        }
    </script>

</body>
</html>

これを行うために使用した記事は次のとおりです。 https://jxbrowser.support.teamdev.com/support/solutions/articles/9000013062-calling-java-from-javascript

私が間違っている場合は修正してください。前もって感謝します。

4

1 に答える 1