Hashchange导致phonegap应用程序崩溃?

时间:2013-09-17 12:14:26

标签: ios ajax cordova hashchange

我在我的phonegap应用中使用ajax来加载不同页面的内容。我也在使用onhashchange来启用后退按钮功能。

一切正常,但如果我点击3个不同的链接(并触发3个哈希更改),那么我的应用程序完全崩溃,变得反应迟钝,然后吃掉所有记忆。

哈希更改的代码如下,任何人都知道为什么它可能会崩溃/内存泄漏?

$('a.ajax').click(function () {
    location.hash = $(this).attr('href').match(/(^.*)\./)[1]
    return false
})

function hashChange() {
    var page = location.hash.slice(1)

    if (page != "" && window.location.hash) {
        wrap.load('pages/' + page + ".html .page-wrapper", function(){
            closeMenu();
        })
    }else{
        wrap.load('pages/Welcome.html .page-wrapper', function(){
            closeMenu();
        })
    }
}

// check for hash change
if ("onhashchange" in window) {
    $(window).on('hashchange', hashChange).trigger('hashchange')
} else { // lame browser
    var lastHash = ''
    setInterval(function () {
        if (lastHash != location.hash)
            hashChange()
        lastHash = location.hash
        //contentScroller.scrollTo(0,0);
    }, 100)
}

请注意,我在xCode控制台中遇到以下错误,我正在运行2.9版的phonegap

CDVWebViewDelegate:当state = 1

时启动导航

谢谢!

1 个答案:

答案 0 :(得分:0)

我不完全确定是什么导致了崩溃,但我决定使用这个插件http://benalman.com/projects/jquery-hashchange-plugin/,现在一切正常

var wrap = $('#contentScroller .scroller');

$('a.ajax').click(function () {
    location.hash = $(this).attr('href').match(/(^.*)\./)[1];
    return false;
});

$(window).hashchange(function () {
    var page = location.hash.slice(1);

    if (page !== "" && window.location.hash) {
        wrap.load('pages/' + page + ".html .page-wrapper", function () {
            closeMenu();
        });
    } else {
        wrap.load('pages/Welcome.html .page-wrapper', function () {
            closeMenu();
        });
    }
});