Javascript 在Safari和Internet Explorer中未显示DHtmlX计划程序事件
我正在构建一个nodejs应用程序,并将DHtmlX调度程序作为我的日历来实现。日历完美地显示了Chrome、Firefox和Microsoft Edge上的事件,但不会显示Safari或IE上的事件。我对web开发非常陌生,不知道自己做错了什么 这是我日历的index.htmlJavascript 在Safari和Internet Explorer中未显示DHtmlX计划程序事件,javascript,node.js,express,cross-browser,dhtmlx,Javascript,Node.js,Express,Cross Browser,Dhtmlx,我正在构建一个nodejs应用程序,并将DHtmlX调度程序作为我的日历来实现。日历完美地显示了Chrome、Firefox和Microsoft Edge上的事件,但不会显示Safari或IE上的事件。我对web开发非常陌生,不知道自己做错了什么 这是我日历的index.html <!doctype html> <head> <meta http-equiv="Content-type" content="te
<!doctype html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Basic initialization</title>
<link rel="stylesheet" href="https://cdn.dhtmlx.com/scheduler/edge/dhtmlxscheduler.css">
<script src="https://cdn.dhtmlx.com/scheduler/edge/dhtmlxscheduler.js"></script>
<style>
html, body{
margin:0px;
padding:0px;
height:100%;
overflow:auto;
}
</style>
<script>
function init() {
scheduler.config.xml_date="%Y-%m-%d %H:%i";
scheduler.init('scheduler_here',new Date(),"month");
scheduler.templates.xml_date = function(value){ return new Date(value); };
scheduler.load("/data", "json");
var dp = new dataProcessor("/data");
dp.init(scheduler);
dp.setTransactionMode("POST", false);
}
</script>
</head>
<body onload="init();">
<div id="scheduler_here" class="dhx_cal_container" style='width:100%; height:100%;'>
<div class="dhx_cal_navline">
<div class="dhx_cal_prev_button"> </div>
<div class="dhx_cal_next_button"> </div>
<div class="dhx_cal_today_button"></div>
<div class="dhx_cal_date"></div>
<div class="dhx_cal_tab" name="day_tab"></div>
<div class="dhx_cal_tab" name="week_tab"></div>
<div class="dhx_cal_tab" name="month_tab" ></div>
</div>
<div class="dhx_cal_header">
</div>
<div class="dhx_cal_data">
</div>
</div>
</body>
基本初始化
html,正文{
边际:0px;
填充:0px;
身高:100%;
溢出:自动;
}
函数init(){
scheduler.config.xml_date=“%Y-%m-%d%H:%i”;
init('scheduler_here',new Date(),“month”);
scheduler.templates.xml_date=函数(值){返回新日期(值);};
load(“/data”,“json”);
var dp=新的数据处理器(“/data”);
dp.init(调度器);
dp.setTransactionMode(“POST”,假);
}
编辑:
下面是日期如何存储在my MongoDB atlas中的您可以使用
新日期(dateString)
构造函数解析服务器日期。这不是推荐的方法,因为它容易出现此类问题
从
注意:由于浏览器差异和不一致,强烈建议使用日期构造函数(和date.parse,它们是等效的)解析日期字符串。仅按惯例支持RFC 2822格式字符串。对ISO 8601格式的支持不同之处在于,仅日期字符串(例如“1970-01-01”)被视为UTC,而不是本地字符串
由于您仅在IE和Safari中遇到问题,这表明问题是由不同的浏览器行为引起的。
您可以检查来自服务器的日期格式,并更新您的问题?我不能给你一个答案,除非看到你工作日期的实际格式
一种可能的解决方案是以客户端调度器可以解析的格式序列化服务器日期。例如,您可以在此处检查它是如何完成的:
如果无法控制服务器日期格式,则需要修改解析函数。为了对此提出建议,我需要知道你的约会是什么样子的
更新
由于从后端获取的日期格式与配置值匹配,
我相信只要你删除这一行,一切都应该开始工作:
scheduler.templates.xml_date = function(value){ return new Date(value); };
调度器根据配置值自动生成xml_date函数,它不需要额外的配置。
如果要显式定义模板,可以执行以下操作:
scheduler.templates.xml_date = scheduler.date.str_to_date("%Y-%m-%d %H:%i");
总的来说,如果服务器格式动态更改,或者如果服务器返回的格式不能用xml\u dateconfig(例如ISO日期或时间戳)表示,则只需定义此模板
此外,请确保将id(不带下划线)属性添加到服务器数据中。客户端计划程序无法识别\u id字段,因此您无法从客户端修改现有记录
只需设置
event.id=event.\u id
在将数据返回到客户端之前,应该完成这项任务。只需添加一张图片来显示如何保存日期