我的问题是在AJAX(动态)网页上使用(浏览器的)后退和下一步按钮。
我自己提出的解决方案:
setInterval(function(){
if (location.hash != hash)
{
hash = location.hash;
app.url = window.location.href.toString().replace('http://xxxxx.nl/xxxx/#!/','')
app.handleURL();
}
}, 500);
此函数读取url(hash)并将其与最后存储的url(hash)进行比较,每0.5秒。如果url已更改(back / next被推送),则运行handleUrl(),它运行更多函数来动态构建我的页面。
问题是,这种工作但是当我点击一个html [A]元素或当我以其他方式更改网址(javascript)时,由于setInterval(),该内容将被加载TWICE ...功能。 如何构建我的HTML / Javascript,使我的内容始终加载一次,
一次当我推回/接下来
一次点击HTML元素/使用Javascript函数 运行
我搜索了谷歌的sh * t以获得解决方案,请帮助!
答案 0 :(得分:0)
您不需要计时器来检查它。只需使用onhashchange事件,并在调用事件时触发AJAX调用。但是,在8以下的IE版本中不支持此事件,因此如果您需要IE支持,您的方法似乎很好。
另外,它们被a
元素调用两次是没有意义的,因为没有理由间隔调用你的AJAX加载器两次因为哈希是用{{1}更改的元素。您可能有一个事件监听器附加到a
元素,导致它加载AJAX内容,这是不需要的,因为您检测到散列中的任何更改,无论它如何更改。
答案 1 :(得分:0)
我建议使用一个库。制定自己的解决方案会很棘手。看看这些: