為了在這重現駭客的神奇功力是怎麼做到的,我們來解密下這逼真效果的實現方法
| 代碼如下 |
複製代碼 |
<div id="autotype">
<p>two_step_auth_command.bui</p>
<br>
<p>for agent 54348</p>
<p>中文文字測試測試</p>
</div>
<script>
$.fn.autotype = function() {
var _this=$(this);
var str=_this.html();
// 正則替換程式碼之間添加的多個空格,不去除換行輸出會有明顯的停頓:實際是在輸出多個空格
str=str.replace(/(s){2,}/g,"$1");
var index = 0;
$(this).html('');
var timer = function() {
var args=arguments;
var current = str.slice(index, index+1);
// html標籤完整輸出,如:<p>
if (current == '<'){
index = str.indexOf('>', index) + 1;
}
else{
index++;
}
//位元運算符: 根據setInterval運行奇偶次來判斷是否加入底線“_”,使輸入效果更逼真
if (index < str.length-1){ //列印字元倒數第2個字元開始,不加底線,以防止結束符可能會多輸出一底線
_this.html(str.substring(0, index) + (index & 1 ? '_' : ''));
}else{
_this.html(str.substring(0, index));
clearTimeout(timer);
};
setTimeout(args.callee,70)
};
// 延遲1s開始
setTimeout(timer,1000);
};
$("#autotype").autotype();
</script> |