0

私は 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 から呼び出されていることがわかりました。 bind メソッド、おそらく bind の ecmascript5 バージョンを呼び出す init_lib または lib_init (覚えていない) と呼ばれる関数の下。

コードをデバッグしているときに、基礎の init_lib からプロトタイプ js バインドにステップインするのを見ました。

すべてのprototypejsの使用/バインドの呼び出しを他の名前に変更することなく、この競合を修正するにはどうすればよいですか?

$.foundation() メソッドは、dom の準備ができたときに呼び出されるため、prototypejs オブジェクトが初期化された後です。

助けてくれてありがとう。

4

1 に答える 1

2

PrototypeJS 1.7.1 はFunction.bind、ポリフィルが存在しないと想定するのではなく、ポリフィルとして処理します。

最新バージョンでは、bind()メソッドを追加 (または置換) する前に、Function プロトタイプでメソッドが使用可能かどうかを確認します。

アップグレードできない場合は、このブロックを見つけてください

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,
于 2013-10-19T15:20:30.000 に答える