My97 DatePicker日历控件在火狐或IE下打不开


title: My97 DatePicker日历控件在火狐或IE下打不开 date: 2018-02-05 22:29:07 categories: javascript tags: Firefox

若是有使用My 97 DatePicker日历控件的话,在项目中可能会遇到一个BUG,若是自身项目有使用use strict严格模式的话,在Firefox或IE11下弹不开日历窗口。javascript

简单介绍

打开Firefox控制台,能够看到以下报错:java

TypeError: access to strict mode caller function is censored.
复制代码

是在严格模式下使用了caller,该属性在MDN web docs有注明:web

该特性是非标准的,请尽可能不要在生产环境中使用它!bash

修复方式

该BUG官方在My97 DatePicker 4.8 Release [2017-7-30]中已修复。如不升级,可在旧版本作以下修改:ui

  1. 找到源码中的WdatePicker.js文件
  2. 找到以下代码(变量名可能不一样,能够搜索caller字段,全文仅两处):
function D(){if(G){func=D.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}return null}
复制代码
  1. if(G){...}...处代码用try-catch包裹,以下:
function D(){if(G){try{func=D.caller;while(func!=null){var $=func.arguments[0];if($&&($+"").indexOf("Event")>=0)return $;func=func.caller}}catch(e){}return null}
复制代码

该解决方案仍源自官方在4.8版本的解法。spa

原文连接:My97 DatePicker日历控件在火狐或IE下打不开code

相关文章
相关标签/搜索