浏览器不支持form.all方法

十几年前的系统,只支持ie,里面针对表单的处理大量使用了form.all("itemname")方法,导致在目前IE外的主流浏览器上无法运行
除了逐个修改为form["itemname"]之外,请问有没有别的办法可以直接改写form.all方法?比如引入一个公用js文件,在js文件中对form.all方法进行重写?
谢谢!

慕容森
浏览 533回答 2
2回答

哈士奇WWW

DEMO,你可以再chrome和ie中看一下,看上去就是查找所有标签就完了。form.all == form.getElementsByTagName('*')。但是你传入itemname当做方法用的。测试了一下发现id和name都可以查找可以改成if(form.all === undefined){    form.all = function(name){        return form[name]     } }

GCT1015

更新-2019年2月12日17:46:15可以看到form.__proto__是HTMLFormElement,可以直接修改这个的HTMLFormElement.prototype。HTMLFormElement.prototype===form.__proto__搞定了。你可以去上面那个demo里面看var _form = document.createElement('form')if(!_form.__proto__.all){   _form.__proto__.all = function(name){      return this[name]   } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript