JS注入:记一次超越人类极限的在线打字

安利一波网址:在线打字测试

OK,那么现在开始贴代码:

1
2
3
4
5
6
7
8
9
var bb =document.getElementById("content").getElementsByTagName("input"),str='';
for (var i=0; i<bb.length; i++){
if (bb[i].type=="hidden"){
str=bb[i].value;
}
if (bb[i].type=="text"){
bb[i].value=str;
}
}

这是第一版的js代码,拷贝进浏览器之后发现文字的确是全部输入好了,可是焦点依旧选定在第一行且滚动条固定在顶部拉不下去。

这个时候有2个办法:
1、把焦点给到页面底部,触发onkeyup事件直接提交;
2、js模拟触发onkeyup事件,自动填充自动keyup换行;

然后一段balabala的查资料敲代码,结果发现他是闭包js,外部调用不了。第二个方法经过多方查阅,js似乎没有模拟onkeyup的方法。那么目前2条线索都断了。

又一段balabala,把方法二改进了,手动触发keyup自动填充

于是第二版代码诞生了,贴进console里一次通过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function autoWrite(){
var bb =document.getElementById("content").getElementsByTagName("input"),str='';
for (var i=0; i<bb.length; i++) {
if (bb[i].type=="hidden"){
str=bb[i].value;
}
if (bb[i].type=="text" && bb[i].value.length <5){
bb[i].value=str;
return;
}
}
}
document.getElementById("content").onkeypress=function(){
autoWrite();
};
autoWrite();//这个是load之后自动填充第一行,按下任意按键填充第二行。。类推。。

总之就这样超越了人类极限,代码自我感觉不是最优,仍有继续优化的空间。


评论区