jQuery IE9 getAttribute from HTML object element
当页面同时使用jQueryUI的datepicker和uploadify控件时,如果是用IE9浏览器的话,先选日期,再点uploaddify的上传按钮就会报"Missing instance data for this datepicker"错误。
经过调试发现调用堆栈如下:
-$(document).mousedown($.datepicker._checkExternalClick)
|----$.datepicker._checkExternalClick
|--------$.datepicker._getInst
|-----------$.data
|---------------$.acceptData
罪魁祸首是object元素调用getAttribute方法会返回null,而且jQuery Bug Tracker已经有类似的ticket,是由于引用了SWFUpload组件引起的,可惜状态是closed bug: cantfix。
可以添加如下workaround代码,来解决datepicker和SWF object冲突的问题:
if ($.browser.msie && '9.0' === $.browser.version) {
$.datepicker._getInst = function(target) {
try {
if ('object' === target.nodeName.toLowerCase()) {
return false;
}
return $.data(target, 'datepicker');
}
catch (err) {
throw 'Missing instance data for this datepicker';
}
};
}
0 评论:
发表评论