我正在使用Magento 1.7.2,jQuery 1.9.1和Prototype.js 1.7,以及Zurb Foundation 4 javascript插件,即joyride插件。
使用foundation.js和foundation.joyride.js文件安装joyride插件之后,我发现prototypejs创建了一个属性Function.prototype.bind = function(){...},这是从foundation.js在一个名为init_lib或lib_init(不记得)的函数下调用bind方法,可能是ecmascript5版本的bind。
在调试代码时,我看到它从基础中的init_lib进入prototypejs绑定。
如何在不必将所有prototypejs使用/调用bind重命名为其他名称的情况下解决此冲突?
当dom准备就绪时调用$ .foundation()方法,因此这是在prototypejs对象初始化之后。
感谢您的帮助。
答案 0 :(得分:2)
PrototypeJS 1.7.1将Function.bind
作为polyfill处理,而不是假设它不存在。
在最新版本中,它将检查函数原型上的bind()
方法是否可用,然后再添加(或替换)
如果您无法升级,请找到此块
return {
argumentNames: argumentNames,
bind: bind,
bindAsEventListener: bindAsEventListener,
curry: curry,
delay: delay,
defer: defer,
wrap: wrap,
methodize: methodize
}
并替换像这样的绑定定义
bind: Function.prototype.bind ? Function.prototype.bind : bind,