题解:前端智勇大闯关-第二季
地址: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/