我正在使用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(不记得了)的函数下调用绑定方法,可能是 ecmascript5 版本的 bind。
在调试代码时,我看到它从 init_lib in Foundation 步入 prototypejs 绑定。
如何解决此冲突,而不必将所有原型js使用/调用绑定重命名为其他名称?
$.foundation() 方法在 dom 准备就绪时调用,因此这是在 prototypejs 对象初始化之后。
感谢您的任何帮助。
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,