我发现一个网站的所有页面都有相同的标题,当浏览页面时,标题永远不会重新加载。标题加载一次后,它就会固定在原位,页面的其余布局(内容和页脚)会从页面到页面加载。这几乎就像使用框架集一样,但实际上并不是。将鼠标悬停在上部菜单上并单击任何项目,您就会明白我的意思。
这种技术叫什么?我想知道它的名称,以便我可以研究并学习它。
谢谢。
这种技术叫什么?我想知道它的名称,以便我可以研究并学习它。
谢谢。
在审核您提交的网站后,我找到了一个JavaScript文件,正如许多人建议的那样,该文件使用Ajax将内容加载到页面中而无需重新加载页面,在网页加载完成后,脚本触发哈希更改,使用window.history.pushState()
来更改URL以匹配您单击的链接,正如@escapedcat所建议的那样,JavaScript还处理动画并更改网页中某些元素的类以反映其状态(更新等)。
代码已被混淆,但您仍然可以看到如何实现: link
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page 1</title>
</head>
<body>
<header>
<nav><a href="page.html">Link</a></nav>
</header>
<div id="content">
this is the default content
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
$('nav a').on('click', function(e){
e.preventDefault();
console.log('test');
$.get(this.href, function(data){
$('#content').html(data);
console.log(this);
history.pushState({foo:'bar'}, 'second page', 'page.html');
});
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page 2</title>
</head>
<body>
This is page 2
</body>
</html>
以上代码更改了网址,您仍需进一步开发代码以获得完整功能,例如返回按钮。
您可以参考使用pushState() / onpopstate时页面不重新加载来添加此类功能。
根据文档所述,pushState()
方法接收 3 个参数:
包含与新历史记录条目相关的序列化信息的状态对象,
页面标题,和
页面 URL。
每当用户导航到新的历史记录条目时,popstate
方法会被触发并且状态会改变以表示当前状态。
假设我们没有预先加载所有内容,基本的指导方针如下:单页应用程序(SPA)是一种网络应用或网站,旨在提供类似于桌面应用程序的更流畅的用户体验,并适合于单个网页。在SPA中,所有必要的代码——HTML、JavaScript和CSS——要么通过单个页面加载检索,要么根据需要动态地加载并添加到页面中,通常是响应用户操作。
#content
元素,根据URL确定。event.preventDefault()
使用历史API(history.pushState(stateObj, title, path)
)自己更改URLwindow.addEventListener('popstate', handler)
)我不确定这个人是如何做到的,但你可以这样实现:
当用户点击菜单项时,使用ajax加载内容(无需刷新)。
$(document).ready(function(){
$("menu-item").click(function(){
$("#content").load("something");
});
});
您可以使用以下代码更新URL with:
window.history.replaceState(“object or string”, “Title”, “/another-new-url”);