[removed]只影响一个页面范围([removed] only effecting page r

2019-10-19 01:02发布

我有一个装载来自数据库的动态内容的功能,当某链接的点击它被称为:

jQuery的

<script>
function loadContent(href){
$.getJSON("/route", {cid: href, format: 'json'}, function(results){  
$("#content_area").html("");
$("#content_area").append(results.content);
reinitFunc1();
reinitFunc2();
reinitFunc3();
// history.pushState('', 'New URL: '+href, href);
});
};
</script>

我想使pushStateonpopstate

我可以使通过注释上面的网址和浏览器的历史变化history.pushState线-在几个页面上向前和向后导航工作正常。

但是,这不加载内容。

前阵子我认为我有完整的功能(即导航和内容加载),增加了这些元素:

window.onpopstate = function(event) {
console.log("pathname: "+location.pathname);
loadContent(location.pathname);
};

因此,我试图将它们添加到一个单独的块:

<script>
$(document).ready(function() {
window.onpopstate = function(event) {
console.log("pathname: "+location.pathname);
loadContent(location.pathname);
};
});
</script>

但是导航局限于一个当这会导致页面范围,我不能向前定位。

我如何使用上面的代码为基础实现导航和内容加载?

编辑

而对于参考,正确的路径是在浏览器历史记录,这只是他们不能被导航(FF和Chrome)和相应的内容不加载。 在Firebug的任何错误。

Answer 1:

我想这就是答案,我碰到这个就来了:

https://stackoverflow.com/a/10176315/1063287

“另外,还要确保在加载onpopstate页面()不要试图推动使用pushState的()自己”。

所以,我一直这样的:

<script>
$(document).ready(function() {
window.onpopstate = function(event) {
console.log("pathname: "+location.pathname);
loadContent(location.pathname);
};
});
</script>

但是从功能移除了这个:

history.pushState('', 'New URL: '+href, href);

并补充它,而不是对jQuery触发点击例如:

$(document).on("click","#main_menu a", function (e) {
href = $(this).attr("href");
loadContent(href);
history.pushState('', 'New URL: '+href, href);
e.preventDefault();
});


文章来源: window.onpopstate only effecting page range of one