-1

Instagram の画像スライダー フィードを作成しています。Chrome、Safari、Firefox、Opera では問題なく動作しますが、IE のすべてのバージョンで失敗します。エラーメッセージすら表示されず、何もしません。

背景の正しい高さを取得するには、画像の高さを親 div に戻す必要がありました。

IE では、最初の画像が読み込まれ、その後何も起こらず、最初の画像の高ささえ返されません。私は周りを検索して、.children() と .each() が IE で正しく動作していないことに関係があるのではないかと考えていますが、よくわかりません。

これが IE/jQuery の互換性の問題の原因ですか? それとも何か他のものですか?これを行う別の方法はありますか?(セキュリティ上の理由から、ほとんどの Auth トークンを削除しました)

彼女は結果の jfiddle です: http://jsfiddle.net/5ACr9/embedded/result/

        (function($){
            $.fn.MySlider = function(interval) {
            var slides;
            var cnt;
            var amount;
            var j;

            function run() {
                // hiding previous image and showing next
                $(slides[j]).fadeOut(1000).removeClass("selected");
                j++;
                if (j >= amount) j = 0;
                $(slides[j]).fadeIn(1000).addClass("selected");
                // loop
                setTimeout(run, interval);
            }


            slides = $('#insta-slider').children();
            amount = slides.length;
            j=0;

            setTimeout(run, interval);
            };
        })(jQuery);

        // custom initialization
        jQuery(window).load(function() {
            $('.smart_gallery').MySlider(5000);
              //gets the height of the first image and returns it to parent
            $( "#insta-slider" ).each(function() {
                        var newHeight = 0, $this = $( this );
                    $.each( $this.children(), function() {
                        newHeight = $( this ).height();
                    });
                        $this.height( newHeight );
              });

            var tid = setTimeout(resize, 5000);

            function resize(){
                  //returns the height of each image after the first one
                  $( "#insta-slider" ).each(function() {
                            var newHeight2 = 0, $this = $( this );
                        $.each( $this.children(".selected"), function() {
                            newHeight2 = $( this ).height();
                        });
                            $this.height( newHeight2 );
                  });

              tid = setTimeout(resize, 5000);
           }

        });
4

1 に答える 1

0

1.9jquery versionであるかどうかを確認すると、 IEでは動作しません。gereater than

約束どおり、このバージョンでは、古い Internet Explorer 6、7、および 8 ブラウザーが取り残されます。その見返りとして、より小さく、より高速で、古い IE との互換性に必要なコードがしばしばそれ自体の問題を引き起こす JavaScript 環境で使用できます。jQuery チームは、IE 6/7/8 で動作する 1.x ブランチを引き続きサポートしています。古いブラウザーに対応する必要がある Web サイトでは、引き続き jQuery 1.9 (および今後の 1.10) を使用できます (使用する必要があります)。

jquery-2-0-releasedを読む

また、 IEでは動作しないため、使用console.log()していないことも確認してください。javascript code

XHTML への CDATA セクションを閉じるために "]]>" または "//]]>" を使用する必要があるかCDATAどうかを確認してください。properly ends

于 2013-09-19T06:57:32.577 に答える