0

getscript() を使用して、画像ギャラリーのスクリプトをロードしています。ギャラリーをクリックするとすぐに、次のコードが実行されます。

$(function () {
$(window).hashchange(function () {
    $(document).ready(function () {
        $('#nav li a').click(function () {
            $('#content-wrap').load(toLoad, showNewContent);

            function showNewContent() {
                if ($('#content-wrap').is(':empty')) {
                    return false;
                } else {
                    if (window.location.hash == "#photos") {
                        alert("soundswaste1");
                        $.getScript("galleria/galleria-1.2.8.min.js");
                        $.getScript("galleria/themes/classic/galleria.classic.min.js", getGalleria);

                        function getGalleria() {
                            alert("soundswaste2");
                            $.getScript("galleria.js");
                        }
                    }
                    $('#content-wrap').fadeIn(500).css("display", "block");
                }
                return false;
            });
        });
    });
});

まず、Chrome コンソールに移動します -> [ネットワーク] タブを右クリックします -> ブラウザのキャッシュをクリアします -> ページを更新します -> 写真をクリックします。「soundswaste1」というアラートが出て効果が発動しません。画像はページ上に並んでいるだけです。

次に、「写真」をもう一度クリックするだけで、両方のアラートをそれぞれ2 回受け取ります。2 つの質問 :

  1. キャッシュをクリアすると、すべてのスクリプトが最初に読み込まれないのはなぜですか。それらが異なるパスにあるためですか?

  2. アラートを2 回目に 2 回受け取るのはなぜですか?

4

1 に答える 1

1

galleria.classic.min.js最初のロードに依存すると思いますgalleria-1.2.8.js が、両方を次々にロードしようとしましたが、2番目のスクリプトがロードされたときに最初のスクリプトがロードされていることを確認してください。次のようにsuccess、最初に 2 番目をロードします。

$(document).ready(function () {
    $('#nav li a').click(function () {
        $('#content-wrap').load(toLoad, showNewContent);

        function showNewContent() {
            if ($('#content-wrap').is(':empty')) {
                return false;
            } else {
                if (window.location.hash == "#photos") {
                    alert("soundswaste1");
                    $.getScript("galleria/galleria-1.2.8.min.js",

                    function () {
                        $.getScript("galleria/themes/classic/galleria.classic.min.js",

                        function () {
                            alert("soundswaste2");
                            $.getScript("galleria.js");
                        });
                    });


                }
                $('#content-wrap').fadeIn(500).css("display", "block");
            }
            return false;
        });
    });
于 2012-10-11T07:17:38.363 に答える