乐趣区

#JavaScript# IE兼容

在 IE 浏览器中出现的问题
1. 不能执行已释放 Script 的代码
1.bug 出现背景:在使用 iframe 标签时,如果子页面向父页面传递在子页面创建的对象(所有对象,包括数组,函数,正则等)时,会出现这个 bug。
2.bug 出现原因:在子页面关闭时,会释放掉在子页面中声明赋值的对象。所以在父页面所有对这个对象的引用操作都会产生这个 JS 错误。
3. 解决方法有 2 种:第一,在父页面把所有对象都建好,在子页面对这个对象进行字符串赋值。第二,如果子页面产生的对象数量是不定的,使用 JSON.stringfy() 把要回传的对象变成字符串。然后在父页面中使用 JSON.parse() 变成对象。

IE、firefox 浏览器下 JS 的 new Date() 的值为 Invalid Date、NaN-NaN
截图信息
1. 问题出现背景:在 IE 浏览器中,使用 new Date(“xxxx”) 方法,将一串日期字符串转换为具体的 Date 格式的时,会出现这个问题。如:new Date(“2019-03-21 10:41:33”) //[date] Invalid Date[date] Invalid Date 但是这个方法却在谷歌浏览器上可以返回正确的结果。
2. 问题出现原因:
字符串的格式不被 IE 浏览器识别,而导致的
3. 解决方法:new Date(“2019/03/21 10:41:33″) //[date] Thu Mar 21 2019 10:41:33 GMT+0800 (中国标准时间)[date] Thu Mar 21 2019 10:41:33 GMT+0800 (中国标准时间)
备注:在使用的时候,我们可以通过字符串转换的方式,将日期字符串格式转换为浏览器支持的格式,在使用 new Date()。
var date = ‘2019-03-21 10:41:33′;
date = date.replace(new RegExp(/-/gm) ,”/”); // 将所有的 ’-‘ 转为 ’/’ 即可
Date d=new Date(date);
4. 总结不同的浏览器是存在差异的,以下列出了所有浏览器都支持的方式。
var d = new Date(2019, 01, 07); // yyyy, mm-1, dd
var d = new Date(2019, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date(“02/07/2019”); // “mm/dd/yyyy”
var d = new Date(“02/07/2019 11:05:00”); // “mm/dd/yyyy hh:mm:ss”
var d = new Date(1297076700000); // milliseconds
var d = new Date(“Mon Feb 07 2019 11:05:00 GMT”); // “”Day Mon dd yyyy hh:mm:ss GMT/UTC

退出移动版