2013-10-19 23 views
0

我使用的是Magento 1.7.2,jQuery 1.9.1和Prototype.js 1.7以及Zurb Foundation 4的javascript插件,即joyride插件。Zurb Foundation 4基礎方法調用包含與Prototype.js衝突的代碼

那麼在使用foundation.js和foundation.joyride.js文件安裝joyride插件後,我發現prototypejs創建了一個屬性Function.prototype.bind = function(){...},並且這個被調用從一個名爲init_lib或lib_init(不記得)的函數下調用bind方法,可能是ecmascript5版本的bind。

當調試代碼時,我看到它從基礎中的init_lib綁定到prototypejs綁定。

我該如何解決這個衝突,而不必重命名所有原型的使用/調用綁定到其他名稱?

當dom準備好時調用$ .foundation()方法,所以這是在prototypejs對象初始化之後。

謝謝你的幫助。

回答

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,