1. ホーム
  2. jquery

[解決済み] Fancybox が jQuery v1.9.0 で動作しない [ f.browser is undefined / Cannot read property 'msie' ]。

2022-11-22 23:57:21

質問

新しいjQuery v1.9.0ではFancyboxが壊れてしまいます。

Fancybox v1.3.4 以降と v2.1.3 以降の両方に影響します。

表示されるエラーは:

v1.3.4 :

Timestamp: 15/01/2013 10:03:28 AM
Error: TypeError: b.browser is undefined
Source File: ...fancybox/jquery.fancybox-1.3.4.pack.js
Line: 18

... その他のエラー

Uncaught TypeError: Cannot read property 'msie' of undefined jquery.fancybox-1.3.4.pack.js:18
Uncaught TypeError: Object [object Object] has no method 'fancybox'

v2.1.3では.

Timestamp: 15/01/2013 10:09:58 AM
Error: TypeError: $.browser is undefined
Source File: h.../fancybox2.1.3/jquery.fancybox.js
Line: 139

これを利用してjQueryを呼び出す場合.

<script src="http://code.jquery.com/jquery-latest.js"></script>

... 既存のfancyboxの実装はすべて失敗します!

解決方法は?

こちらで報告されているjQueryのバグが存在するようです。 http://bugs.jquery.com/ticket/13183 のようにすると、Fancyboxのスクリプトが壊れてしまいます。

また https://github.com/fancyapps/fancyBox/issues/485 を参照してください。

回避策として、ロールバックして jQuery v1.8.3 のように、jQuery のバグが修正されるか、Fancybox にパッチが適用されるまでの間。


アップデイト (2013年1月16日): Fancybox v2.1.4 がリリースされ、jQuery v1.9.0でも問題なく動作するようになりました。

fancybox v1.3.4-では、まだロールバックが必要です。 jQuery v1.8.3 を適用するか、あるいは 移行スクリプト は、@Manuさんの回答で指摘されている通りです。


アップデイト (2013年1月17日)。のユーザに対する回避策です。 Fancybox v1.3.4 :

をパッチします。 fancybox js ファイル をjQuery v1.9.0で動作させるには、以下のようにします。

  1. を開く jquery.fancybox-1.3.4.js ファイル(フルバージョン。 パック版ではなく ) をテキスト/html エディタで編集してください。
  2. 29行目あたりで、:

    isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,
    
    

    で置き換え、( 編集済 2013年3月19日: より正確なフィルタ)。

    isIE6 = navigator.userAgent.match(/msie [6]/i) && !window.XMLHttpRequest,
    
    

    アップデイト (2013年3月19日)。また $.browser.msienavigator.userAgent.match(/msie [6]/i) 615行目あたりで(あるいは、すべての $.browser.msie のインスタンスを置き換える)、ありがとうございます。 joofow ... 以上です。

または、既にパッチが適用されたバージョンをダウンロードする ここから (2013年3月19日更新...ありがとうございます。 フェアリー にてご指摘いただきました。)

注意 これは非公式なパッチであり、Fancybox の作者によるサポートはありませんが、そのまま動作します。自己責任でご利用ください。)

オプションとして、ロールバックして jQuery v1.8.3 を適用するか、あるいは 移行スクリプト は、@Manu さんの回答で指摘されている通りです。