Javascript偶尔会失败(10%的时间)
我的javascript代码有一个小问题。我正在尝试使用fullCalendar,90%的时间它都能完美地工作。然而,大约有10%的情况下,它似乎无法加载fullCalendar函数,我不知道为什么 我调用日历所在div上方的3个外部脚本:Javascript偶尔会失败(10%的时间),javascript,.net,Javascript,.net,我的javascript代码有一个小问题。我正在尝试使用fullCalendar,90%的时间它都能完美地工作。然而,大约有10%的情况下,它似乎无法加载fullCalendar函数,我不知道为什么 我调用日历所在div上方的3个外部脚本: <script src="../../../../assets/lib/moment.min.js"></script> <script src="../../../../assets/lib/jquery.min.js">
<script src="../../../../assets/lib/moment.min.js"></script>
<script src="../../../../assets/lib/jquery.min.js"></script>
<script src="../../../../assets/js/fullcalendar.js"></script>
<div id="calendar"></div>
以下是我的javascript:
//variables to pull the serialized data from c# through to javascript.
var dateStart = '<%=dateStartListToJS%>';
var dateEnd = '<%=dateEndListToJS%>';
var titles = '<%=titlesListToJS%>';
var links = '<%=linksListToJS%>';
//use JSON to parse into arrays.
var dateStartArray = JSON.parse(dateStart);
var dateEndArray = JSON.parse(dateEnd);
var titlesArray = JSON.parse(titles);
var linksArray = JSON.parse(links);
//initiate variable to handle our calendar events.
var JSONEvents = [];
//for testing...
//alert(dateStartArray + dateEndArray + titlesArray + linksArray);
//show the calendar and hide the buttons to switch between the calendar and list.
$("#calendar").show();
$(".viewAsList").hide();
$(".viewAsCalendar").hide();
//while we still have more calendar events to add, run this loop to add courses to the calendar.
//calendar currently only displays the start date of the course.
for (var i = 0; i < dateStartArray.length ; i++) {
JSONEvents.push(
{
"title": titlesArray[i],
"url": linksArray[i],
"start": dateStartArray[i],
"end": dateEndArray[i],
"allDay": true,
//"backgroundColor" : "#FFF"
});
}
//function: createCalendar. creates the calendar
function createCalendar() {
//using fullcalendar
$('#calendar').fullCalendar({
//setting up the header of the calendar.
header: {
center: '',
right: 'prev,next',
left: 'title'
//right: 'month'
},
eventColor: '#FCFCFC',
events: JSONEvents
});
$(".viewAsCalendar").show();
$("#calendar").hide();
$('.viewAsCalendar').click(function () {
$(".viewAsCalendar").hide();
$(".viewAsList").show();
$("#courseDetailDisplay").hide();
$("#calendar").show();
});
$('.viewAsList').click(function () {
$(".viewAsCalendar").show();
$(".viewAsList").hide();
$("#courseDetailDisplay").show();
$("#calendar").hide();
});
}
//if the calendar can't load and an error is thrown, try reloading the calendar
//function loadCalendar() {
// try {
// createCalendar();
// }
// catch (err) {
// //alert("test");
// setTimeout(function () {
// loadCalendar();
// }, 4000);
// }
//}
$(window).load(function () {
createCalendar();
});
当我运行页面时,它通常工作正常,但是当它失败时,我在包含$'calendar'.fullCalendar{的行上得到一个错误,说:
未捕获类型错误:未定义不是函数
有人知道为什么会出现这种情况吗?我尝试过用document.ready和head.ready切换window.load,但都没有解决这个问题
非常感谢您的帮助
谢谢
编辑:根据建议,我尝试了以下方法:
将所有引号更改为双引号
增加了150毫秒的超时时间
检查“网络”选项卡以查看是否有文件未加载
不幸的是,以上这些都没有帮助,因为所有3个文件都在加载,最大加载时间为50毫秒,通常在10-15毫秒左右
还有其他建议吗,伙计们?我感谢这里的帮助,你的Js是什么时候执行的?目前我看不出有任何问题,没有种族条件或其他什么。我想这没有什么区别,但你正在混合和创建字符串。一个丑陋的解决方法可能是setTimeoutloadCalendar,50;实际上,你从来没有调用createCalendar,所以您展示给我们的e代码不是您测试的代码。如果不是偶然,它总是在同一个位置失败,那么它必须是.fullCalendar,因为以前已经使用过$'calendar',但是那里有双引号。因此我会尝试我的第一个建议。其他解决方法:将js文件添加到缓存清单,然后将清单添加到站点,等等在定义fullCalendar之前,请尝试将外部脚本移动到标题。@romuleald,对不起,我的代码在结尾显示了错误的函数名,loadCalendar实际上应该是createCalendar,我在将代码发布到此处之前清理代码时忘了将其切换出去。我将对其进行编辑。