1

このスライダーを IE で動作させるのを手伝ってくれませんか。

jquery ファイル Row 1, Column 1 of this fileにエラー メッセージがあることを示すエラー メッセージが表示されます (IE バージョンのみ) 。

現在、購入した他のスクリプトを確認しましたが、それらは IE で動作します。しかし、私のものはクラッシュし続けます。ドキュメントに記載されているすべての指示に従ったので、何が問題なのか誰か教えてもらえますか。(Firefox、Chrome、Safari、Opera で動作)

4

1 に答える 1

1

これは正確な答えではありませんが、より知識に基づいた推測です。

どこかでIE9にアクセスできる場合は、ドキュメントモードをIE8またはIE7に設定すると、[スクリプト]タブの下に[デバッグの開始]ボタンが表示されます。IE8またはIE7に設定すると、ステートメントが強調表示d[f]=cされ、settincによって確認できます。watchesdDispHTMLStyle (一部のDOMノード(などdiv)のスタイルオブジェクトでfありString width、でありcNumber値付きですNaN(「NotaNumber」の略) ")。コールスタックもあり、その中に(再フォーマットされた)が表示されます

jQuery(document).ready(function ($) {
    $('#my-slider').advancedSlider({
        width: '100%',
        height: 225,
        skin: 'minimal-small',
        slideButtonsNumber: true,
        effectType: 'scale',
        slicePattern: 'topToBottom',
        sliceDuration: 9000,
        timerAnimationControls: false,
        slideLoop: true,
        slideArrows: false,
        overrideTransition: true,
        shadow: false,
        timerAnimation: false,
        keyboardNavigation: true,
        pauseSlideshowOnHover: true,
        lightbox: false,
        thumbnailLightboxIcon: false,
        preloadNearbyImages: true,
        allowScaleUp: true,
        captionBackgroundOpacity: 0.90,
        slideProperties: {
            0: {
                captionPosition: 'custom',
                captionShowEffect: 'slide',
                captionHeight: 170,
                captionTop: 29,
                captionLeft: 630,
                slideshowDelay: 25000,
                captionBackgroundColor: '#ffffff'
            },
            1: {
                captionPosition: 'custom',
                captionShowEffect: 'slide',
                captionHeight: 170,
                captionTop: 29,
                captionLeft: 630,
                slideshowDelay: 10000,
                captionBackgroundColor: '#ffffff'
            }
        }
    });
});


//@ sourceURL=/inline-13b6e3cdf71.js

これはドキュメントで設定されていることに注意してください。CSSはまだロードされていない可能性があります!

幅を実際の数値に設定すると、問題が解決する可能性が高いと思われます。

通常、すべてのスタイルルールが読み込まれるまで、HTMLページの幅が保証されるわけではありませんインラインスタイルでさえも無効にすることができます。したがって、のを使用することwidth100%無意味かもしれません。それはすべて、ブラウザがその値をどのように解釈するかにかかっていると思います。

また、ドキュメントreadyハンドラーからウィンドウloadハンドラーに移動して、何が起こるかを確認することもできます。そうすることで、jQueryを手動で起動してオブジェクトの幅を取得し、スタイルルールへの依存を維持したい場合はその値を使用することもできます。もちろん、不利な点は、スライダーがロードされる前に不要なコンテンツやその他のアーティファクトが表示される可能性があることです。

つまり、簡単に言えば、その幅の固定値を手動でコーディングして試してから、そこから決定します。

編集:わかりました、それはうまくいきませんでした。ソースが異なることがはっきりとわかりますが、同じ種類のエラーでもあります(d[f]=c以前と同じ種類のオブジェクト/値を持つステートメント)。

さらに詳しく調べると、コールスタックの上位にこのステートメントがありc.css("width",parseInt(c.data("width")));ます。ローカル変数cは、クラス「slide-buttons」で単一のdivをラップするjQueryオブジェクトのように見えます。前に述べた声明を思い出したようですが、必要なほど深く掘り下げていませんでした。ですから、私の2番目の推測は、それが(どういうわけか)彼らと関係があるということです。

また、検索してhttp://codecanyon.net/item/advanced-slider-jquery-xml-slider/132618を見つけました。これは、あなたが使用しているものであると想定しますが、何も表示されません。明示的なドキュメント(有料のプラグインには意味があると思います)、コメントセクションで、width: '100%'苦情なしのような値を使用している人々やデモhttp://bqworks.com/products/advanced-slider/を確認します。 response.htmlは、スライダーを初期化するIE8ブラウザーモードで実行されます...jQuery(document).ready(...)そのため、他のすべての以前の理論をほぼ打ち破ります(申し訳ありません!)。しかし、スライドボタンには幅が必要なものがあると思います。その行の周りからの「きれいな」コードは次のとおりです(私が思うc.css("width",...)ことに関する私の注釈付き)起こっている):

c = M.find(".slide-buttons");  //jquery find under M something with class slide buttons
//if the element doesn't have "width data"
//grab values from the style rules using jQuery .css http://api.jquery.com/css/
if (!c.data("width"))
{
    c.data("width", parseInt(c.css("width")));
    c.data("height", parseInt(c.css("height")))
}
//find other things (odd, why is there no period?)
d = c.find("buttons-middle");
f = d.find("buttons-inner");
//directly assign back those same values possibly obtained earlier 
c.css("width", parseInt(c.data("width")));
c.css("height", parseInt(c.data("height")));

そのコードが呼び出されると、c.css( "width")は "auto"を返しますが、これは明らかに数値として解析できません。もちろん、問題は、IE8以下が他のブラウザが返さない「自動」のようなものを返すのはなぜですか?答えは、「それは、そのシナリオで古いIEバージョンが行うことです」かもしれません。

また、デモではスライダーボタンも使用されていないため、このウィジェットのソースコードファイルを取得した時点で、このウィジェットの開発者がクリーンなソリューションを見つけてリリースしていない可能性があるシナリオを使用している可能性があります。

したがって、私が追加したものをすべて読みたくない場合は、次のようなcssルールを追加してみてください。

.advanced-slider .slide-buttons {
    width: 400px;
}

またはそれでうまくいくものは何でも。

于 2012-12-09T03:47:23.387 に答える