File tree Expand file tree Collapse file tree 3 files changed +86
-0
lines changed
12 - Key Sequence Detection Expand file tree Collapse file tree 3 files changed +86
-0
lines changed Original file line number Diff line number Diff line change 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,输入暗号后触发特效的页面也就完成了,你可以自由在代码里设置需要的暗号。
Original file line number Diff line number Diff line change 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 >
Original file line number Diff line number Diff line change 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 >
You can’t perform that action at this time.
0 commit comments