从 JavaScript 到 JavaFX 进行 Upcall

Making Upcalls from JavaScript to JavaFX

本文关键字:进行 Upcall JavaFX JavaScript      更新时间:2023-09-26

我正在尝试从 Java 调用testCheckMate的 JavaScript 函数,但出现错误:

Exception in thread "JavaFX Application Thread" netscape.javascript.JSException: SyntaxError: Unexpected EOF

WebView 持有 FullCalendar。

如何从 Java 调用 JQuery/Javascript?提前谢谢大家。

<!DOCTYPE html>
<html>
    <head>
        <link href='../fullcalendar/fullcalendar.css' rel='stylesheet' />
        <link href='../fullcalendar/fullcalendar.print.css' rel='stylesheet' media='print' />
        <script src='../lib/jquery.min.js'></script>
        <script src='../lib/jquery-ui.custom.min.js'></script>
        <script src='../fullcalendar/fullcalendar.min.js'></script>
        <script>
            $(document).ready(function() {
                var date = new Date();
                var d = date.getDate();
                var m = date.getMonth();
                var y = date.getFullYear();
                $('#calendar').fullCalendar({
                        editable: true,
                    testCheckMate: function() {
                        alert("Check-Mate");
                    },
                    events: [
                        {
                            title: 'All Day Event',
                            start: new Date(y, m, 1)
                        },
                        {
                            id: 999,
                            title: 'Repeating Event',
                            start: new Date(y, m, d + 4, 16, 0),
                            allDay: false
                        }
                    ]
                });
            });
        </script>
    </head>
    <body>
        <div id='calendar'></div>
    </body>
</html>
如果我

做对了,您希望在用户单击日历的某些项目时从JavaScript发送一些数据。

首先,你应该给 JavaScript 属性起一个不同于函数eventClick实际名称的名称,比如:myClick 。然后传递一个新的JavaApp实例:

script.setMember("myClick", new JavaApp());

其中JavaApp应该是公开的,它的方法应该从 JS 接收消息。(编辑:您可以定义几个参数):

public class JavaApp {
    public void javaApp(String title, String x, String y, String name) {
        System.out.println("Event Title: "+title+", Coordinates ("+x+", "+y+"), view Name: "+name);
    }
}

最后,在 JavaScript 端,在 eventClick 函数内部,使用从 JavaFX 发送的 JS 属性及其方法将数据发送到 Java 端:

eventClick: function(calEvent, jsEvent, view) {
    myClick.javaApp(calEvent.title, jsEvent.pageX, jsEvent.pageY, view.name);
    // change the border color just for fun
    $(this).css('border-color', 'red');
};