标签:mootools javascript internet-explorer
因此,在尝试让我的应用程序在最新的IE上工作之后,事实证明IE不喜欢以下代码:
document.body.getElement('.className');
Firefox和Chrome的反应还不错,但IE上的document.body没有Mootools Element方法.
在查看了the documentation之后,一些示例将document.body包装在$()中以将其公开给Mootools方法.
只是想知道它在FireFox / Chrome中工作正常的原因,但不能在IE中自动运行?
解决方法:
这是因为IE暴露(或者,呃,不)元素原型的扩展方式.在适当的浏览器中,document.body – 以及作为DOM的一部分并且从Element派生的所有其他内容 – 继承附加到Element.prototype的方法.
在旧的IE中,这不会发生(它继承自内置的原型,但它只读 – 是的).查看有关原因的任何主题 – 例如. Is there really no way to expose the prototype of a html element in IE (<8)?
简而言之,它是DOM.这不是ECMA规范.他们没有这样做.他们现在这样做(完全自IE9以来)
MooTools – 是典型的 – 通过扩展它手动访问的元素来解决这个问题.它通过$或元素构造函数或Slick(当它第一次遇到元素时)这样做.
在IE中,扩展将不仅设置元素存储/ uid,它将从Element.prototype复制对expando属性的引用到元素对象本身.
所以,如果你这样做了:
$(document.body);
document.body.addClass('bar').adopt(new Element('div'));
这会奏效.您只需要扩展一次,然后将所有方法复制到实际对象上.
在未来,mootools将不是原型而是包装(如jquery),因此任何元素访问都将通过$type函数.
见https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.js#L268-275
标签:mootools,javascript,internet-explorer 来源: https://codeday.me/bug/20190729/1570657.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。