VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > JavaScript >
  • JavaScript教程之一个基于chrome扩展的自动答题器(4)

108 } 109 //存放到本地存储空间 110 localStorage['config']=JSON.stringify(config); 111 }; 112 $('#msgFromContent').val(''); 113 },500); 114 115 //点击再次答题时再运行一次 116 $('.oneMore').click(function(){ 117 ans_plus(config['set']); 118 }) 119 120 //如果处于模拟答题或者正式答题,则执行一次 121 if(window.location.pathname=='/monidati.html' | window.location.pathname=='/kaishijingsai.html') 122 { 123 ans_plus(config['set']); 124 }; 125 126 //自动获取分享后的两次机会 127 $('#lji .dati').click(function() 128 { 129 //如果是登录状态,就自动获取机会 130 if($.getUrlParam('h')) 131 { 132 $('.icon-wechat').click(); 133 $('.icon-wechat').click(); 134 $('#jiathis_weixin_modal').hide(); 135 } 136 return false; 137 }); 138 setTimeout(()=>$('#lji .dati').click(),500); 139 140 //console.log($('.jtico_weixin')); 141 //$('.jtico_weixin').click(); 142 143 //根据url中a的值判断是否需要自动答题 144 if($('#lji span').eq(0).html()>0) 145 { 146 if($.getUrlParam('a')==1) 147 //将config中的自动答题控制打开, 148 config['set']['auto_ans']=1; 149 //localStorage['config']=JSON.stringify(config); 150 setTimeout(()=>$('#lbuts').click(),1000); 151 } 152 153 }); 154 155 156 157 //根据设置进行答题 158 function ans_plus(conf) 159 { 160 if(!conf['dtime']) 161 conf['dtime']=3; 162 163 //关闭自动作答功能 164 //conf['auto_ans']=0; 165 166 var dtime=parseInt(conf['dtime']*1000+500*Math.random());//做题间隔 167 var err=0;//匹配错误指示器 168 169 //基准x,y坐标,伪造回传数据 170 var posx=Math.floor(800+Math.random()*200); 171 var posy=Math.floor(400+Math.random()*140); 172 173 if(dtime<1200) 174 { 175 dtime=1200; 176 } 177 178 //点击交卷按钮时解锁交卷功能 179 $('.W_jiaoquancol').click(function(){$(this).removeClass('W_jiaoquancol')}); 180 //console.log(dtime); 181 if(conf['auto_ans']==1 | conf['sign_ans']==1 |conf['sign_ans_mouseover']==1) 182 { 183 184 //解锁上一题下一题 185 //setInterval(()=>{$('.W_bgcol').removeClass('W_bgcol');},500); 186 187 jQuery('ul.W_ti_ul li').each( 188 function() 189 { 190 //console.log(dtime); 191 var target=''; 192 var li=jQuery(this); 193 var logtxt=''; 194 195 //题号 196 var questnum=li.find('.w_fz18').eq(0).html(); 197 logtxt=questnum+'.'+logtxt; 198 199 //题目类型,单选题,多选题 200 var questtype=li.find('.w_fz18').eq(1).html(); 201 logtxt=logtxt+'〔'+questtype+'〕'; 202 //题目 203 var quest=li.find('.w_fz18').eq(2).html().replace(/[  \r\n&nbsp;]/g,""); 204 for(i=0;i<anslist.length;i++) 205 { 206 if(anslist[i][0]==quest) 207 { 208 target=anslist[i][1]; 209 logtxt=logtxt+'题目:'+anslist[i][0]+'%c'; 210 break; 211 } 212 } 213 214 //判断是否匹配,如果不匹配就报错 215 if(target=='') 216 { 217 //alert('匹配试题出现错误,请更新版本或联系作者'); 218 err++; 219 //自动作答的话就点击下一题 220 logtxt=logtxt+'题目:'+quest; 221 console.log("%c"+logtxt,'color:red') 222 if(conf['sign_ans']==1) 223 { 224 setTimeout(()=>{$('.w_btn_tab_down').eq(0).click();},questnum*dtime); 225 } 226 return true; 227 } 228 229 //查找答案 230 li.find('label').each( 231 function() 232 { 233 var label=jQuery(this); 234 var labertxt=label.find('sapn').eq(0).html(); 235 labertxt=labertxt.replace(/[ABCD.  \r\n&nbsp;]/g,''); 236 237 if(questtype=='单选题' & target==labertxt) 238 { 239 logtxt=logtxt+'答案:'+labertxt+';'; 240 //标红答案 241 if(conf['sign_ans']==1) 242 label.find('sapn').eq(0).css('color','red'); 243 //鼠标滑过正确答案时选中 244 if(conf['sign_ans_mouseover']==1) 245 { 246 label.find('sapn').eq(0).mouseover(function(){ 247 $(this).click(); 248 $('.W_bgcol').removeClass('W_bgcol'); 249 $('.W_kuan li').eq(questnum-1).addClass('activess'); 250 if(questnum==20) 251 { 252 $('.W_jiaoquancol').removeClass('W_jiaoquancol'); 253 } 254 }) 255 } 256 //自动作答 257 if(conf['auto_ans']==1) 258 { 259 setTimeout(()=>{ 260 261 label.find('sapn').eq(0).click(); 262 263 //解除上一题下一题和题目序号的锁定 264 $('.W_bgcol').removeClass('W_bgcol'); 265 $('.W_kuan li').eq(questnum-1).addClass('activess'); 266 if(questnum==20) 267 { 268 $('.W_jiaoquancol').removeClass('W_jiaoquancol'); 269 } 270 },(questnum-0.5)*dtime); 271 } 272 return false; 273 } 274 else if(questtype=='多选题' & target.indexOf(labertxt)>-1) 275 { 276 //标红答案 277 logtxt=logtxt+'答案:'+labertxt+';'; 278 //标红答案 279 if(conf['sign_ans']==1) 280 label.find('sapn').eq(0).css('color','red'); 281 //鼠标滑过正确答案时选中 282 if(conf['sign_ans_mouseover']==1) 283 { 284 label.find('sapn').eq(0).mouseover(function(){ 285 $(this).click(); 286 $('.W_bgcol').removeClass('W_bgcol'); 287 $('.W_kuan li').eq(questnum-1).addClass('activess'); 288 if(questnum==20) 289 { 290 $('.W_jiaoquancol').removeClass('W_jiaoquancol'); 291 } 292 }) 293 } 294 if(conf['auto_ans']==1) 295 { 296 //自动作答 297 setTimeout(()=>{ 298 label.find('sapn').eq(0).click(); 299 //解除上一题下一题和题目序号的锁定 300 $('.W_bgcol').removeClass('W_bgcol'); 301 $('.W_kuan li').eq(questnum-1).addClass('activess'); 302 if(questnum==20) 303 { 304 $('.W_jiaoquancol').removeClass('W_jiaoquancol'); 305 } 306 307 },(questnum-0.5)*dtime) 309 310 311 } 312 313 314 } 315 316 } 317 ); 318 //自动作答的话就点击下一题 319 if(conf['auto_ans']==1) 320 { 321 setTimeout(()=>{ 322 $('.w_btn_tab_down').eq(0).click(); 323 if("undefined" != typeof ClickButton) 324 ClickButton({'button':0,'clientX':Math.floor(posx+Math.random()*50),'clientY':Math.floor(posy+Math.random()*15)}); 325 },questnum*dtime); 326 } 327 328 console.log(logtxt,'color:red'); 329 } 330 ); 331 } 332 //如果配有匹配错误,则自动交卷 333 if(conf['auto_ans']==1 & err==0) 334 { 335 setTimeout(()=>{$('.jiaojuan').eq(0).click();},51*dtime); 336 } 337 //if(err>0) 338 //alert('有'+err+'道题目匹配出错,请手动作答'); 339 };
复制代码

inject.js则是根据content上级传过来的指令进行动作。

window.anslist为提前写入到程序中的基础题库,减少在线更新时数据通讯量;

因为只能从content接收指令,所以在inject中也保存了一份用户设置;

其中的ans_plus()函数则是整个答题器的核心,也是我最开始写的脚本部分。


相关教程
关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号