升级jQuery后jquery.ajax_upload.0.6.js出现废弃函数报错如何解决
jquery.ajax_upload.0.6 高版本jQuery兼容报错修复方案
jquery.ajax_upload.0.6 发布时间较早,依赖的多个jQuery核心API在jQuery 1.9及以上版本被正式移除,这是升级后报错的核心原因,和后端VB.NET逻辑无关联,直接修改插件源码对应调用即可解决,具体修复点如下:
- 替换已移除的
$.browser接口
该接口原本用于浏览器类型、版本判断,1.9版本后被彻底删除,可通过原生JS实现同等判断逻辑,替换插件内所有相关调用:// 先在插件闭包开头加兼容判断 var isOldIE = "ActiveXObject" in window && (function(){ var ua = navigator.userAgent; return ua.indexOf('MSIE ') > -1 && parseInt(ua.split('MSIE ')[1],10) < 9; })(); // 把所有$.browser.msie、$.browser.version相关判断替换为上面的isOldIE变量即可 - 替换已废弃的
.live()事件绑定方法.live()在jQuery 1.7版本标记废弃、1.9版本正式移除,插件内所有.live()绑定的事件直接替换为.on()委托绑定即可,原有回调逻辑不需要修改:// 原代码示例 // this.fileInput.live('change', function(){ /* 原有逻辑 */ }) // 替换为 $(document).on('change', this.fileInput, function(){ /* 原有逻辑完全保留 */ }) - 适配内部事件接口变更
插件如果调用了内部属性$.event.handle,高版本jQuery中该内部接口已更名为$.event.dispatch,加一行兼容逻辑即可:// 把原代码中$.event.handle.apply(xxx)的写法替换为 var eventCore = $.event.dispatch || $.event.handle; eventCore.apply(/* 保留原有传入参数,不需要修改 */) - 修正属性操作接口的误用
老版本jQuery中.attr()可同时操作自定义属性和DOM原生状态,高版本中DOM原生状态(如disabled、checked、readonly)需要用.prop()操作,遍历插件代码,把操作上述原生状态的.attr(调用替换为.prop(即可,自定义属性的.attr()调用不需要改动。
临时方案:如果不想修改插件源码,可以在引入jquery.ajax_upload.0.6.js之前先引入jQuery Migrate兼容库,自动补全所有废弃API,但长期使用建议直接修改插件源码,减少额外资源加载。
修复完成后清空浏览器缓存测试即可,不需要调整VB.NET后端的任何业务代码。
内容的提问来源于stack exchange,提问作者YannickIngenierie
相关产品推荐
相关产品推荐

