Skip to content

Commit 169470c

Browse files
committed
update exercise 12
1 parent 8283b2a commit 169470c

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# 12 键盘输入序列的验证指南
2+
3+
> 作者:©[缉熙Soyaine](https://github.com/soyaine)
4+
> 简介:[JavaScript30](https://javascript30.com)[Wes Bos](https://github.com/wesbos) 推出的一个 30 天挑战。项目免费提供了 30 个视频教程、30 个挑战的起始文档和 30 个挑战解决方案源代码。目的是帮助人们用纯 JavaScript 来写东西,不借助框架和库,也不使用编译器和引用。现在你看到的是这系列指南的第 12 篇。完整指南在 [GitHub](https://github.com/soyaine/JavaScript30),喜欢请 Star 哦♪(^∇^*)
5+
6+
> 创建时间:2017-02-27
7+
最后更新:2017-02-27
8+
9+
## 实现效果
10+
11+
初始文档里仅仅提供了一个 `script` 标签,供我们从 [Cornify.com](https://www.cornify.com/) 加载一个 JS 文件,调用其中的 `cornify_add()` 方法时,会在页面中追加 `p` 标签,并在 DOM 中插入一个图标。Cornify 官网首页去体验。
12+
13+
而这个挑战要实现的效果是,当在此页面完整输入了“暗号”(一串事先定义好的字符串)时,生成新的 Cornify 特效。
14+
15+
## 解决思路
16+
17+
1. 指定可激发特效的字符串
18+
2. 监听并获取输入的字符
19+
3. 处理输入,在符合条件时,调用 cornify
20+
21+
## 过程指南
22+
23+
1. 声明一个空数组,用于存放的输入字符,同时声明“暗号”
24+
25+
````js
26+
const pressed = [],
27+
secretCode = 'helloworld'
28+
````
29+
30+
2. 添加键盘的 `keyup` 事件监听,用箭头函数的参数来接收事件。注意此处的 `keyup` 事件是针对页面的,所以在调试时单击页面后时焦点在页面中才生效,在 Console 面板中是不会触发的。
31+
32+
````js
33+
window.addEventListener('keyup', (e) => { })
34+
````
35+
36+
3. 验证输入的字符。此处方法是将每一个输入的字符存入 `pressed` 数组,然后处理数组,使其呈现队列的性质,也就是输入一个字符时,会挤出原有的的字符,保证其最大长度始终为 `secretCode` 的长度。这样做的目的是为了便于验证暗号,只有完整无误的输入一次暗号时,才会触发相应的效果。当然这只是其中一种处理办法,也还有其他办法。
37+
38+
```js
39+
window.addEventListener('keyup', (e) => {
40+
console.log(e.key);
41+
pressed.push(e.key);
42+
pressed.splice(-secretCode.length - 1, pressed.length - secretCode.length); //截取数组
43+
if (pressed.join('').includes(secretCode)) { //判断是否符合暗号
44+
console.log('DING DING!');
45+
cornify_add();
46+
}
47+
```
48+
49+
Bingo,输入暗号后触发特效的页面也就完成了,你可以自由在代码里设置需要的暗号。
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
\<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Key Detection</title>
6+
<!-- <script type="text/javascript" src="http://www.cornify.com/js/cornify.js"></script>-->
7+
</head>
8+
<body>
9+
<script>
10+
const pressed = [];
11+
const secretCode = 'wesbos';
12+
13+
window.addEventListener('keyup', (e) => {
14+
console.log(e.key);
15+
pressed.push(e.key);
16+
pressed.splice(-secretCode.length - 1, pressed.length - secretCode.length);
17+
if (pressed.join('').includes(secretCode)) {
18+
console.log('DING DING!');
19+
// cornify_add();
20+
}
21+
console.log(pressed);
22+
});
23+
</script>
24+
</body>
25+
</html>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Key Detection</title>
6+
<script type="text/javascript" src="http://www.cornify.com/js/cornify.js"></script>
7+
</head>
8+
<body>
9+
<script>
10+
</script>
11+
</body>
12+
</html>

0 commit comments

Comments
 (0)