new Date() 在IE8兼容性

https://blog.csdn.net/qq_38627581/article/details/78032486

问题时这样的

var now = new Date("2000-01-02");
var nowTime = now.getTime();
console.log(nowTime);
//ie //NAN
//Chrome //946771200000

这段代码在chrome中可以正常输出毫秒数,而在ie8中则输出NAN。
这是因为ie8不支持”2000-01-01”这种参数格式。

new Date()支持的参数格式:

(只测试了chrome,Firefox,ie8)

  • “2000-01-02” chrome √ Firefox √ ie8 ×
  • “2000-1-2”   chrome √ Firefox √ ie8 ×
  • “2000/1/2”   chrome √ Firefox √ ie8 √
  • “2000/01/02” chrome √ Firefox √ ie8 √
  •  2000, 1, 2   chrome √ Firefox √ ie8 √

解决上述问题的方法:

可以将”2000-01-02”字符串替换为ie8兼容的写法(后三种)

var dateStr = "2000-01-02";
var newDateStr = dateStr.replace(/-/g,"/");
var now = new Date("2000-01-02");
var nowTime = now.getTime();
console.log(nowTime);
//ie    //946771200000
//Chrome //946771200000

  • 注:这种方法可以将前两种ie8不支持的格式转化为支持的

禁用元素点击事件(兼容IE8+)

原文连接
https://blog.csdn.net/lihaofeifei/article/details/82760592

实现思路:chrome、firefox下利用CSS3属性pointer-events: none;元素永远不会成为鼠标事件的target。

该方式兼容IE11,但是再IE其他版本需要仍然会有点击事件。需要注意。

考虑到需兼容IE8+,利用js绑定点击事件,函数内直接return false,阻止其他事件进行。

js代码:

  1. // 禁用点击事件
  2. function notClick(ele) {
  3. $(ele).addClass('notClick').on('click', function (e) {
  4. e.preventDefault();
  5. e.stopPropagation();
  6. return false;
  7. });
  8. }
  9. // 取消禁用点击事件
  10. function runClick(ele) {
  11. $(ele).removeClass('notClick').off('click');
  12. }

css代码:

  1. .notClick {
  2. pointer-events: none;
  3. cursor: default;
  4. }

使用时,调用notClick函数,并将需绑定元素作为参数传入。需要取消禁用点击事件,调用runClick函数。

补充:

pointer-events取值为none时:

元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶触发父元素的事件侦听器。

使用pointer-events来阻止元素成为鼠标事件目标不一定意味着元素上的事件侦听器永不会触发。如果元素后代明确指定了pointer-events属性并允许其成为鼠标事件的目标,那么指向该元素的任何事件在事件传播过程中都将通过父元素,并以适当的方式触发其上的事件侦听器。当然位于屏幕上在父元素上但不在后代元素上的鼠标活动都不会被父元素和后代元素捕获(将会穿过父元素而指向位于其下面的元素)。

解释:未完待续。。。。

实践过程 总是提示e is not default需要再改进
原文地址:https://www.cnblogs.com/sunny3158/p/11765609.html