我对这个特殊的ajax对象很困惑

时间:2015-10-11 20:45:18

标签: javascript ajax object dom

我最近在jQuery中学到了一些ajax方法,我偶然发现了这段代码,我无法弄清楚它在做什么。

ajax: {
        init: function() {
            app.ajax._ctr = 1;
            app.ajax._preloaded = {};
            app.ajax.inProgress = false;

            app.dom.$body.on('click', 'a:not(.no-ajax):not([hreflang])', function(e) {
                var $a   = $(e.currentTarget);
                var href = $a.attr('href');
                // what is indexOf
                if (href.indexOf('mailto:') < 0
                    && href != '#'
                    && ((href.indexOf(app.baseUrl) >= 0 && href.indexOf(app.baseUrl) <= 7) || href.indexOf('://') < 0)
                    && !$a.parents('.mejs-container').length) {
                    e.preventDefault();
                    app.ajax.loadPage(href, true, $a.attr('data-ajax-resolver'));
                }
            });
            // below is load event
            app.dom.$window.on('load', function() {
                app.ajax.currentStateCtr = app.ajax._ctr;
                history.replaceState({ internal: true, ctr: app.ajax._ctr++ }, null, document.URL);
            });
            // below is popstate event
            app.dom.$window.on('popstate', function(e) {
                if (e.originalEvent.state && e.originalEvent.state.internal) {
                    app.ajax.loadPage(location.href, false, null, e.originalEvent.state.ctr < app.ajax.currentStateCtr);
                    app.ajax.currentStateCtr = e.originalEvent.state.ctr;
                }
            });

        }, // end of init

        getResolver: function(resolverName) {
            if (resolverName !== undefined && app.ajax._resolvers[resolverName] !== undefined) {
                return app.ajax._resolvers[resolverName];
            }

            return app.ajax._defaultResolver;
        }, 

我注意到它在一个带有空DOM对象的App对象中声明它。我也理解这里使用了一些jQuery事件,但我并不清楚这些事件是如何在&#39; popstate&#39; event和getResolver函数正在与数据一起使用。

0 个答案:

没有答案