我在IE 11中替换字符串时遇到问题,我在this site here发布了一个与此相关的问题,但我认为我应该正确地提出另一个问题,重新说明我认为问题所在:我有一个日期选择器jquery UI,我在谷歌日历中绘制事件的日期,我使用事件的摘要为datepicker单元格提供一个类。以下代码:
beforeShowDay: function (date) {
checado = $.isEmptyObject(todosEventos);
r = [true, ""];
fecha = $.datepicker.formatDate('yy-mm-dd', date);
//console.log(fecha);
if (checado && unEvento === null) {
r[1] = "Highlighted-unknown";
//console.log(todosEventos[fecha]);
}
else if (!checado) {
if (unEvento === null || unEvento === 'undefined') {
elEvento = todosEventos[fecha];
if (typeof (todosEventos[fecha]) !== 'undefined') {
console.log("elEvento=" + elEvento.summary);
console.log("El objeto " + todosEventos[fecha]);
console.log("Fecha analizada " + date);
r[2] = elEvento.summary;
//sinAcentos = accentsTidy(elEvento.summary);
sinAcentos = elEvento.summary.toLowerCase();
non_asciis = { 'a': '[àáâãäå]', 'ae': 'æ', 'c': 'ç', 'e': '[èéêë]', 'i': '[ìíîï]', 'n': 'ñ', 'o': '[òóôõö]', 'oe': 'œ', 'u': '[ùúûűü]', 'y': '[ýÿ]' };
for (i in non_asciis) { sinAcentos = sinAcentos.replace(new RegExp(non_asciis[i], 'g'), i); }
fechaIni = elEvento.start;
fechaFin = elEvento.end;
console.log("Fecha de inicio del evento " + fechaIni);
console.log("Fecha de fin del evento " + fechaFin);
console.log(sinAcentos);
r[1] = date >= fechaIni && date <= fechaFin ? " Highlighted" + sinAcentos.replace(/\s/g, "_") : " Highlighted-unknown";
}
}
在Firefox和Chrome中正常工作,但在IE中没有,其中类会在其中保留重音字符,从而产生类似“Highlighteddías_de_descanso_obligatorio”的内容。最初我有一个名为accentsTidy的函数如下:
function accentsTidy(s){
var r = s.toLowerCase();
non_asciis = {'a': '[àáâãäå]', 'ae': 'æ', 'c': 'ç', 'e': '[èéêë]', 'i': '[ìíîï]', 'n': 'ñ', 'o': '[òóôõö]', 'oe': 'œ', 'u': '[ùúûűü]', 'y': '[ýÿ]'};
for (i in non_asciis) { r = r.replace(new RegExp(non_asciis[i], 'g'), i); }
return r;
};
但是如你所见,我评论了对这个函数的调用并直接替换了事件的摘要,如sinAcentos = elEvento.summary.toLowerCase();
,但它甚至不起作用。我希望有人可以指出我可能做错了什么。我已经尝试了函数accentsTidy直接在IE 11的开发者控制台中输入它,它可以工作,但在我的代码中,它没有。有人可以帮我解决这个问题吗?