显示当前日期的JavaScript脚本在IE11无法运行如何适配
IE11下日期格式化脚本失效的解决方案
你的代码在IE11中无法运行的核心原因是 String.prototype.padStart() 属于ES2017标准新增的API,IE11的JavaScript引擎完全不支持该方法,执行到对应代码时会抛出未定义错误。
修复方案
方案1:改写补零逻辑(推荐,轻量无额外依赖)
直接使用原生判断实现补零效果,兼容所有旧浏览器,修改后的代码如下:
var dt = new Date(); var year = dt.getFullYear(); var month = dt.getMonth() + 1; // 自定义补零逻辑替代padStart month = month < 10 ? '0' + month : month.toString(); var day = dt.getDate(); day = day < 10 ? '0' + day : day.toString(); document.getElementById("date").innerHTML = year + "." + month + "." + day;
方案2:添加padStart的polyfill
如果项目中多处使用了padStart方法,不想逐一修改原有代码,可以在所有业务代码执行前注入以下兼容代码,之后原有代码无需调整即可在IE11下运行:
if (!String.prototype.padStart) { String.prototype.padStart = function(targetLength, padString) { targetLength = targetLength >> 0; padString = typeof padString !== 'undefined' ? String(padString) : ' '; if (this.length >= targetLength) { return String(this); } targetLength = targetLength - this.length; while (padString.length < targetLength) { padString += padString; } return padString.slice(0, targetLength) + String(this); }; }
内容的提问来源于stack exchange,提问作者Ralf Strauss
相关产品推荐
相关产品推荐

