AJAX を使用して URL のアンカーに基づいてコンテンツをロードする小さなページ用の Javascript リスナーを構築しようとしています。オンラインで調べたところ、setInterval()これを行うために使用するスクリプトを見つけて変更しましたが、今のところ問題なく動作しています。$(document).ready()ただし、メニューとコンテンツの特殊効果のために、他の jQuery 要素があります。setInterval()他の jQuery エフェクトを使用しないと機能しません。次のようにループにjQueryエフェクトを含めることで、それを機能させる方法を完成させましたsetInterval()。
$(document).ready(function() {
    var pageScripts = function() {
        pageEffects();
        pageURL();      
    }
    window.setInterval(pageScripts, 500);
});
var currentAnchor = null;
function pageEffects() {
    // Popup Menus
    $(".bannerMenu").hover(function() {
        $(this).find("ul.bannerSubmenu").slideDown(300).show;
    }, function() {
        $(this).find("ul.bannerSubmenu").slideUp(400);
    });
    $(".panel").hover(function() {
        $(this).find(".panelContent").fadeIn(200);
    }, function() {
        $(this).find(".panelContent").fadeOut(300);
    });
    // REL Links Control
    $("a[rel='_blank']").click(function() {
        this.target = "_blank";
    });
    $("a[rel='share']").click(function(event) {
        var share_url = $(this).attr("href");
        window.open(share_url, "Share", "width=768, height=450");
        event.preventDefault();
    });
}
function pageURL() {
    if (currentAnchor != document.location.hash) {
        currentAnchor = document.location.hash;
        if (!currentAnchor) {
            query = "section=home";
        } else {
            var splits = currentAnchor.substring(1).split("&");
            var section = splits[0];
            delete splits[0];
            var params = splits.join("&");
            var query = "section=" + section + params;
        }
        $.get("loader.php", query, function(data) {
            $("#load").fadeIn("fast");
            $("#content").fadeOut(100).html(data).fadeIn(500);  
            $("#load").fadeOut("fast");
        });
    }
}
これはしばらくは正常に機能しますが、ページがロードされてから数分後、IE と Firefox でほとんど停止します。FF エラー コンソールを確認したところ、「再帰が多すぎます」というエラーが返されました。Chrome は気にしないようで、ページが開いている時間の長さにもかかわらず、ページは多かれ少なかれ正常に動作し続けます。
呼び出しが再帰の問題を引き起こしているように思えpageEffects()ますが、ループから移動しようとすると、setInterval最初のループになるとすぐに機能しなくなります。
これに関する助けがあれば大歓迎です!