JavaScript实战
馨er BOSS

JavaScript实战练习

1 案例

1.1 轮播消息提示

1
2


4.1 根据哈希值切换页面的显示内容

1
2
3
4
5
6
7
8
9
10
11
12
13
const contentEl = document.querySelector('.content');
window.addEventListener("hashchange", () => {
switch(location.hash) {
case "#/home":
contentEl.innerHTML = "Home";
break;
case "#/about":
contentEl.innerHTML = "about";
break;
default:
contentEl.innerHTML = "default";
}
})

4.2 阻止默认跳转行为在本页面显示内容

HTML5的History

有六种模式改变URL而不刷新页面

  • replaceState:替换原来的路径
  • pushState:使用新的路径
  • popState:路径的回退
  • go:向前或向后改变路径:e.g. go(1) go(-1) go(2)
  • forward:向前改变路径
  • back:向后改变路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=script, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div id="app">
<a href="/home">home</a>
<a href="/about">about</a>
<div class="content">default</div>
</div>
<script>
const contentEl = document.querySelector('.content');
const aEls = document.getElementsByTagName('a');
for(let aEl of aEls) {
aEl.addEventListener("click", e => {
e.preventDefault(); // 阻止默认的跳转操作
const href = aEl.getAttribute('href');
history.pushState({}, "", href);
changeContent();
// console.log(location.pathname);
})
}
// 点击浏览器回退页面,可以理解为进栈出栈
window.addEventListener("popstate", () => {
changeContent();
})
const changeContent = () => {
switch(location.pathname) {
case "/home":
contentEl.innerHTML = "Home";
break;
case "/about":
contentEl.innerHTML = "About";
break;
default:
contentEl.innerHTML = "Default";
}
}
</script>
</body>
</html>
  • 本文标题:JavaScript实战
  • 本文作者:馨er
  • 创建时间:2022-10-29 22:10:35
  • 本文链接:https://sjxbbd.vercel.app/2022/10/29/d984bf50a170/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!