题解:前端智勇大闯关第二季

  地址:http://ued.taobao.com/quiz2/  

  朋友分享了这个闯关,感觉挺好玩的,通关后记录一下,把解法分享出来,如果你想试试,请先不要看。如果你有更好玩的解法,欢迎交流。

以下解法在Chrome浏览器下尝试,暂不考虑其他浏览器的兼容性。

第一关:不解释。

第二关:调样式,那个E是反转,不是旋转,这个一开始没看清,需要注意下的。

U: top:26px;left:423px;
E: top:26px;left:490px;-webkit-transform:scaleX(-1);
D: top:26px;left:559px;

第三关:这个要看一下页面源代码,有个class="welcom"的textarea,里面的01串是机器码,要先转换成ascii码,再转换回字符,就是下一关的网址了,居然是动态的,做了个JS直接获取,放开发者工具里执行即可:

var string = document.getElementsByClassName("welcome")[0].value,r = "",r2 = "";
for (var i = 0; i < string.length; i = i + 8) {
    var t = string.substring(i, i + 8);
    r = r + String.fromCharCode(parseInt(t, 2))
}
for (var i = 0; i < r.length; i = i + 4) {
    var t = r.substring(i, i + 4);

    r2 = r2 + String.fromCharCode(parseInt(t, 16))
}

第四关:这个摩斯码的确有点变态啊,手敲绝对不靠谱啊。一开始想用个按键精灵跑跑的,想想这是前端的,还是老老实实用JS吧。模拟了click事件发现不行,有点意思,反查JS代码,终于在tool.js的118,119行找到了驱动事件。找到了就好办,你要啥我就给你啥。蛋疼无比的敲啊,这里只算了个对"du"的敲法,刷新几次页面就可以遇到了【setTimeout的延时在运行时还是有点问题,不能每次都精确到200毫秒,自己调一下即可】:

var ed = document.createEvent('MouseEvent');ed.initEvent('mousedown', false, false);
var eu = document.createEvent('MouseEvent');eu.initEvent('mouseup', false, false);
var zgy = function(){document.body.dispatchEvent(ed);document.body.dispatchEvent(eu);}
//du
setTimeout(zgy,10);setTimeout(zgy,20);setTimeout(zgy,30);setTimeout(zgy,250);setTimeout(zgy,470);
var t1=1000;
setTimeout(zgy,t1+20);setTimeout(zgy,t1+240);setTimeout(zgy,t1+660);setTimeout(zgy,t1+670);setTimeout(zgy,t1+680);

第五关:阿美的头像,闲的蛋疼的人,直接看图也可以拼接出来。用JS跑的话也很快,没啥难度:

var content = document.getElementById('content').innerText;
var s = content.split("\n");
var url = "";
for (i = 0; i < s.length; i++) {
    s[i] = s[i].trim();
    url = url + s[i].substring(0, 1) + s[i].substring(s[i].length - 1, s[i].length)
}
location.href=url;

第六关:这个页面可以直接输入的,在value="  "之间输入。

总结:这个闯关考JS的计较多,尤其是原生JS操作DOM。挺好玩的,期待下期。顺便说下,第一季的地址是http://ued.taobao.com/quiz/

原文地址:https://www.cnblogs.com/baronzhao/p/2907643.html