0

jquery.fancybox-1.2.6.jsを使用してモーダルポップアップを実行すると、互換モードに設定されている場合、IE8を除くすべてのプラットフォームで機能します。

モーダルを表示しようとすると、ページにjavascriptの「実装されていません」というエラーが表示され、モーダルがポップアップしなくなります。これは、jquery.fancybox-1.2.6.jsでエラーが発生した行番号(行207)を示し、これには次のものが含まれます。

 $("#fancy_content")[0].style.removeExpression("height");

アラートステートメントを使用して古い学校のファクトファインディングを実行しましたが、.styleは機能しているようです。これは、「実装されていない」removeExpression関数です。

誰でもこの問題を回避することができましたか?

4

3 に答える 3

1

問題のある部分をコメントアウトすることができましたが、今ではうまく機能しているようです:

//This was causing error in IE8 in compatibility mode
//            if (oldIE || ieQuirks) {
//                $("#fancy_content")[0].style.removeExpression("height");
//                $("#fancy_content")[0].style.removeExpression("width");
//            }

            if (pad > 0) {
                width += pad * 2;
                height += pad * 2;

                $("#fancy_content").css({
                    'top': pad + 'px',
                    'right': pad + 'px',
                    'bottom': pad + 'px',
                    'left': pad + 'px',
                    'width': 'auto',
                    'height': 'auto'
                });

//This was causing error in IE8 in compatibility mode
//                if (oldIE || ieQuirks) {
//                    $("#fancy_content")[0].style.setExpression('height', '(this.parentNode.clientHeight - ' + pad * 2 + ')');
//                    $("#fancy_content")[0].style.setExpression('width', '(this.parentNode.clientWidth - ' + pad * 2 + ')');
//                }

それがないとうまくいくのは奇妙に思えますが、ファンシーボックスの使い方によっては、すべての人にとってうまくいかないかもしれません...

于 2010-02-12T20:52:55.060 に答える
0

私はこれが古い質問であることを知っていますが、ここに後世のための私の2セントがあります...

サイトを jQuery バージョン 1.4.2 から 1.8.3 にアップグレードしたときに、同じ問題に遭遇しました。問題は、次のコードを使用して、boxModel が存在するかどうかを派手なボックスで判断する方法にあるようです。

ieQuirks = $.browser.msie && !$.boxModel;

jQuery の新しいバージョンでは、$.boxModel は未定義 (1.3 で非推奨) を返します。これは falsey であり、すべてのブラウザーでテストが true を返します。$boxModel ではなく $.support.boxModel を使用すると、問題が解決しました。

ieQuirks = $.browser.msie && !$.support.boxModel;

現在、これらのコード ブロックは、目的のブラウザーのいずれかに対するものでない限り入力されません。

于 2013-09-15T17:23:52.197 に答える
0

すでに回答を投稿していますが、試してみる価値があると思われるものがあります。

.style.removeExpression は、実装されていないと予想されるものです。このコードは、quirksmode が適切なサイジングを行うのを支援するためにあります。

だから代わりに

$("#fancy_content")[0].style.removeExpression("height");

やってみる

$("#fancy_content").height('auto') 

以降

$("#fancy_content").height($(window).height() - pad * 2 );

幅と同じこと。

ここでディメンションの設定が重要かどうかはわかりません。コンテンツが多く、div のスケールが大きすぎる場合に重要になる可能性があります。たくさんのコンテンツで試してみるか、firebug などで大きな画像を貼り付けてください :)

于 2010-02-12T21:12:31.533 に答える