Zurb Foundation 4基础方法调用包含与Prototype.js冲突的代码

时间:2013-10-19 02:41:41

标签: jquery magento prototypejs zurb-foundation zurb-joyride

我正在使用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对象初始化之后。

感谢您的帮助。

1 个答案:

答案 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,