[解決済み] Fancybox が jQuery v1.9.0 で動作しない [ f.browser is undefined / Cannot read property 'msie' ]。
質問
新しい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で動作させるには、以下のようにします。
- を開く jquery.fancybox-1.3.4.js ファイル(フルバージョン。 パック版ではなく ) をテキスト/html エディタで編集してください。
-
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.msie
をnavigator.userAgent.match(/msie [6]/i)
615行目あたりで(あるいは、すべての$.browser.msie
のインスタンスを置き換える)、ありがとうございます。 joofow ... 以上です。
または、既にパッチが適用されたバージョンをダウンロードする ここから (2013年3月19日更新...ありがとうございます。 フェアリー にてご指摘いただきました。)
注意 これは非公式なパッチであり、Fancybox の作者によるサポートはありませんが、そのまま動作します。自己責任でご利用ください。)
オプションとして、ロールバックして jQuery v1.8.3 を適用するか、あるいは 移行スクリプト は、@Manu さんの回答で指摘されている通りです。
関連
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] jQuery UIダイアログのクローズボタンを削除するには?
-
[解決済み] Twitter Bootstrapのモーダルクローズに関数をバインドする
-
[解決済み] jQueryがどのバージョンで読み込まれているかを確認するには?
-
[解決済み] GoogleのCDNからjQuery UI CSSをダウンロードする
-
[解決済み] jQueryでloading spinnerを表示するには?
-
[解決済み] ボタンやリンクを無効化・有効化する最も簡単な方法とは(jQuery + Bootstrap)
-
[解決済み] jQueryで多段式フォームをリセットする
-
[解決済み】jQueryのテンプレートエンジン【終了しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 選択オプション「selected」を値で設定する
-
[解決済み] jQueryのイベントハンドラを削除する最良の方法?
-
[解決済み] ユーザーがEnterキーを押してフォームを送信できないようにする
-
[解決済み] 動的に生成された要素でクリックイベントが動作しない [duplicate]
-
[解決済み] jQueryがどのバージョンで読み込まれているかを確認するには?
-
[解決済み] Bootstrapのモーダルを閉じる
-
[解決済み] ドロップダウンのアイテムの選択値をjQueryで取得する
-
[解決済み] jQuery セレクタ。Id Ends With?
-
[解決済み】$(window).width()がメディアクエリとは違う
-
[解決済み] jQueryで選択されたオプションのインデックスを取得する