Mootools 和纯 JS 脚本之间的冲突
我被困在一个纯 JS 脚本中,该脚本应该包含在 Joomla(1.7,Mootools 1.3.2)中,
并且在该库之外完美工作时引发了与该库的冲突。
示例:
没有 Mootools http://jsfiddle.net/2W87v/
使用 Mootools http://jsfiddle.net/2W87v/1/
第 133 行周围的 Firebug 错误:
document.getElementById("pu_" + champs[i]) is null
我尝试了各种方法解决方案,重命名某些变量,使用 $ 而不是 document.getElementById,将每个函数包装在匿名函数周围。无济于事。
如果有人能指出正确的方向,我将非常感激。
I am stuck with a pure JS script that should be included in Joomla (1.7, Mootools 1.3.2)
and raises a conflict with this library while working perfectly outside it.
Examples :
no Mootools
http://jsfiddle.net/2W87v/with Mootools
http://jsfiddle.net/2W87v/1/
Firebug error around line 133 :
document.getElementById("pu_" + champs[i]) is null
I tried all kinds of solutions, renaming certain variables, using $ instead of document.getElementById, wrapping each function around an anonymous function. To no avail.
If someone could point in the right direction, I'd be very grateful.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
mootools 是典型的。
照原样是行不通的,它将沿着原型链向上并获取 mootools 添加到数组原型中的内容。
一般来说,
for var in object
作为构造始终适用于 OBJECTS 而不是数组。无论如何它都可以工作,因为在 javascript 中你没有合适的数组类型,它只是一个具有类似数组属性(例如长度)的对象类型。通过
options.each(function(el, i) {}
或普通的 for 循环来循环数组。此外,您还可以检查
hasOwnProperty
:mootools is prototypical.
is a no go as is, it will go up the prototype chain and get the stuff mootools adds to the Array prototype.
in general,
for var in object
as a construct has always been intended for OBJECTS and not arrays. it works anyway, because in javascript you don't have a proper Array type, it's just an Object type with Array-like properties (eg, length).loop the arrays via
options.each(function(el, i) {}
or a normal for loop instead.also, you can check for
hasOwnProperty
: