我在我的phonegap应用程序中使用ajax加载不同页面的内容。我还使用onhashchange来启用back按钮功能。
最初一切正常,但如果我点击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控制台中收到以下错误,并且我正在运行PhoneGap2.9版本
CDVWebViewDelegate:导航在state=1时启动
谢谢!
发布于 2014-10-17 21:49:54
我不完全确定是什么导致了崩溃,但我决定使用这个插件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();
});
}
});https://stackoverflow.com/questions/18849573
复制相似问题