我打算使用phonegap开发应用程序,并且需要使用全日历的“可选”功能。该应用程序在手机上可以正常工作。但是将其安装到平板电脑后,点击任意日历都会显示此错误:
07-25 16:12:37.676:I / chromium(4707):[INFO:CONSOLE(128)]“未捕获的TypeError:无法调用未定义的方法'call'”,来源:file:/// android_asset / www / apis / fullcalendar / core / main.js(128)
为什么它仅在平板电脑上发生,但在我的手机上却能正常工作
这些是我在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();
更新:我将三星j5 pro(Android Oreo)用于我的手机测试设备,该设备可以正常工作。有问题的设备是我的三星银河标签3(android kitkat)。还尝试在设置为电话和桌子的nox播放器上安装应用程序。但也不能工作
答案 0 :(得分:1)
似乎就像我在选项卡上运行代码时一样。 js无法识别Core / main.js中提供的任何matchs方法
在第107行上的matchs方法选择期间,我需要添加webkitMatchesSelector,以便在其他未定义的代码中使用该matchs方法。
原文:
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