是否可以为用户点击页面上的任何链接定义某种事件处理程序,并在此处理程序中确定当前页面是否可以更新自身以成为该位置的页面或是否完全刷新需要做什么?
例如,当我有以下2页时:
主页
<h1>Home</h1>
<a href="http://example.com/">Home</a>
<a href="http://example.com/subsite">Subsite</a>
<a href="http://google.com">Google</a>
子页面
<h1>Subsite</h1>
<a href="http://example.com/">Home</a>
<a href="http://example.com/subsite">Subsite</a>
<a href="http://google.com">Google</a>
这两个页面都可以由同一个javascript客户端呈现,该客户端也加载了该页面。因此,如果一个人在主页上,他已经加载了能够呈现站点子站点的客户端,所以如果单击链接“子站点”,客户端应该能够启动并告诉浏览器“嘿,您不必向服务器发出新请求,我可以为您处理!“
我想象这样的事情:
window.addEventListener("visitpage", function(e){
if(client.canRender(e.url)){ //decide if we will update the page by ourself, or if the browser needs to do a request to the server
client.render(e.url);
e.preventDefault();
return false;
}
});
我已经知道有history.pushState()
函数告诉浏览器我们现在正在使用另一个网址,但它没有按照我的意愿行事。它与该主题有关。我正在搜索的是一种阻止浏览器离开页面的方法,如果我能够通过javascript显示浏览器从服务器获取的页面。自动。
我真的不想为调用preventDefault
的页面上的每个链接添加事件事件侦听器,然后pushState
将URL更改为链接将更改它的内容。我正在寻找一个甚至可以工作的解决方案,如果我在javascript中做这样的事情:
window.location = "/subsite"
这可能吗?