How to fix Uncaught TypeError: Cannot call method 'call' of undefined in fullcalendar

How to fix Uncaught TypeError: Cannot call method 'call' of undefined in fullcalendar

我正在使用 phonegap 开发应用程序,需要使用全日历 'selectable' 功能。这些应用程序在 phone 中运行良好。但是当安装到 tablet 时,点击任何日历都会显示此错误:

07-25 16:12:37.676: I/chromium(4707): [INFO:CONSOLE(128)] "Uncaught TypeError: Cannot call method 'call' of undefined", source: file:///android_asset/www/apis/fullcalendar/core/main.js (128)

为什么它只发生在 tablet 而在我的 phone 上它工作正常

这些是我在 html 中导入的脚本:

<link href='apis/fullcalendar/core/main.css' rel='stylesheet' />
<link href='apis/fullcalendar/daygrid/main.css' rel='stylesheet' />
<script src='apis/fullcalendar/core/main.js'></script>
<script src='apis/fullcalendar/interaction/main.js'></script>
<script src='apis/fullcalendar/daygrid/main.js'></script>

这就是我创建日历的方式

    var today = moment().format('YYYY[-]MM[-]DD');
    var eventList = new Array();

    $.each(
        holidayDateList,
        function(i,v) {
            var events = {
                title: holidayNameList[i],
                start: v,
                backgroundColor: "#8c8c8c"
            };

            eventList.push(events);
        });

    $.each(
        offdayServerDateList,
        function(i,v) {
            var events = {
                title: offdayServerReasonList[i],
                start: v
            };

            eventList.push(events);
        });

    $.each(
        offdayDateList,
        function(i,v) {
            var events = {
                title: offdayReasonList[i],
                start: v
            };

            eventList.push(events);
        });

    var calendarEl = document.getElementById('calendar');

    var calendar = new FullCalendar.Calendar(calendarEl, {
        plugins: [ 'interaction', 'dayGrid' ],
        defaultDate: today,
        editable: false,
        selectable: true,
        selectMirror: true,
        select: function(arg) {
            var isToday = moment(arg.start).format('YYYY[-]MM[-]DD') == today;
            var isAfterToday = moment(arg.start).isAfter(today);
            var isHolidayDate = holidayDateList.indexOf(moment(arg.start).format('YYYY[-]MM[-]DD')) >= 0;
            var isOffdayDate = offdayServerDateList.indexOf(moment(arg.start).format('YYYY[-]MM[-]DD')) >= 0;

            if((isAfterToday || isToday) && !isHolidayDate && !isOffdayDate) {
                $("#dialog-form").dialog("open");
            }
        },
        eventLimit: true,
        eventClick: function(info) {
            var isOffdayDate = offdayServerDateList.indexOf(moment(info.event.start).format('YYYY[-]MM[-]DD')) >= 0;

            if(isOffdayDate) {
                alert("Open delete reason dialog for " + moment(info.event.start).format('YYYY[-]MM[-]DD'));
            } else {
                alert(info.event.title);
            }
        },
        events: eventList
    });

    calendar.render();

更新:我使用 samsung j5 pro (android oreo) 作为我的 phone 测试设备,该设备可以正常工作。有问题的设备是我的三星 galaxy tab 3(android kitkat)。还尝试在设置为 phone 和 table 的 nox 播放器上安装应用程序。但也不能工作

好像我 运行 我的标签上的代码。 js 无法识别 Core/main.js

中提供的任何匹配方法

我需要在第 107 行的匹配方法选择期间添加 webkitMatchesSelector,这样如果其他方法未定义,代码将使用该匹配方法。

原文:

var matchesMethod = Element.prototype.matches ||
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector;

已更新:

var matchesMethod = Element.prototype.matches ||
Element.prototype.matchesSelector ||
Element.prototype.msMatchesSelector || 
Element.prototype.webkitMatchesSelector; // add this

参考:https://github.com/matsko/ng4-animations-preview/issues/1