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 评论:

My Favorites