javascript - 简单的 JS 适用于除 Safari 之外的所有浏览器

标签 javascript safari

常见的头痛,但每个答案似乎都是独一无二的,我有一些简单的 JS 倒计时直到 12 月 15 日,这个倒计时适用于每个浏览器,除了我在 safari 上每天、每小时、每分钟得到“NaN”。

<p id="clockdiv" class="decofont ">
<span class="days"></span>
<span class="hours"></span>
<span class="minutes"></span></p>
<!--302 D | 21 H | 48 M december 15 2017 -->

var deadline = '12 15 2017';

function getTimeRemaining() {
    var t = Date.parse('12 15 2017') - Date.parse(new Date());
    var seconds = Math.floor((t / 1000) % 60);
    var minutes = Math.floor((t / 1000 / 60) % 60);
    var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
    var days = Math.floor(t / (1000 * 60 * 60 * 24));

    var time = {
        'total': t,
        'days': days,
        'hours': hours,
        'minutes': minutes,
        'seconds': seconds
    };

    var output_time = document.getElementById('clockdiv');
    output_time.innerHTML = days + ' D | ' + hours + ' H | ' + minutes + ' M';
    setTimeout(getTimeRemaining, 60000);
}


getTimeRemaining(deadline);

如果您有 JS 跨浏览器兼容性的链接(不适用于所有浏览器的常见功能),则可获得奖励积分。是什么导致这个问题在 safari 上中断?最简单的替代方案是什么?

最佳答案

问题的根源在于您正在解析字符串并期望所有浏览器都以相同的方式解析它。日期字符串的解析几乎完全依赖于实现,ECMA-262 只需要支持一种格式(ISO 8601 扩展)。

所以在行中:

var t = Date.parse('12 15 2017') - Date.parse(new Date());

您应该使用 Date 构造函数。另外,您不应该使用 Date.parse(new Date()),而应使用 new DateDate.now() 所以:

var t = new Date(2017,11,15) - new Date();

这将返回两个日期之间的毫秒差:

console.log(new Date(2017,11,15) - new Date());

另请参阅Difference between dates in JavaScript .

关于javascript - 简单的 JS 适用于除 Safari 之外的所有浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43882318/

相关文章:

javascript - 从 Chrome 扩展程序注入(inject)后运行脚本

javascript - `PropTypes.node` 和 `PropTypes.any` 在 react 中有什么区别?

javascript - 将 json 存储为变量以便在另一个函数中重用

javascript - 组合两个 window.onscroll 函数

css - Safari 将 td 移动到移动设备上的新行

javascript - 多文件上传在 Safari 6.1 上面不起作用,除非打开 Web 检查器

javascript - PushState() 关闭 'remember password' 对话框

ios - 是否可以通过单击应用程序的 WebView 中的 URL 打开移动 safari?

safari - MacOS Safari 11“防止跨站点跟踪”中断了Google对网站的登录

safari - 适用于 Web 设计师的 Windows 或 Linux 上的真实 Safari 模拟器