最近写宗教题,需要写很多选择题,但是也不没有成绩要求,就随便选,因此想着用console控制台来执行js。
1.自动将所有选择题选中,代码如下
function addScript(){ var script = document.createElement("script"); script.type = "text/javascript"; script.src = 'http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js'; document.body.appendChild(script); } addScript(); function func1(){ $("input[type='checkbox']").attr("checked","checked"); $("input[type='radio']").attr("checked","checked"); } func1(); 将以上方法复制到console.log之后报错,$ is not defined查看Elements明明有了外部链接但是不能用$。而且发现在console里面先执行第一个函数之后,然后再执行第二个函数,发现有效果,一起执行就会报错。
后来百度才知道是异步加载这个js的,不能确定什么时候可以加载完成,因此可以用监听事件的方法来判断然后执行你想要执行的函数。
function loadScript(url){ var headDOM= document.getElementsByTagName('head')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.onload = script.onreadystatechange = function() { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete" ) { func1(); // Handle memory leak in IE script.onload = script.onreadystatechange = null; } }; script.src= url; headDOM.appendChild(script); } function func1(){ $("input[type='checkbox']").attr("checked","checked"); $("input[type='radio']").attr("checked","checked"); } loadScript('http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js'); 最终修改为如上,可以加载其他类库,然后加载完执行相应的函数。
做这个主要是为了兼容一些网站没有引用jquery,但是还是想用jquery的一些方法来做事情。
有个bug是选中所有的多选题并且全都选中,单选题会选中最后一个,因此基本没有正确率,不过做一些没有成绩门槛的题还是很好用的,不用一个一个点击了。
2.另外一种方法,异步加载ajax,然后用eval执行js代码,或者直接用eval执行静态写好的js代码【不用ajax获取】
var responseHtml = '<scr'+'ipt>alert("我是小白。。。")</scr'+'ipt>'; responseHtml = responseHtml.replace(/<\/?sc[^\>]+>/g,'') var ele = document.createElement("script"); //ele.src = "xyz.js"; ele.innerHTML = responseHtml; document.body.appendChild(ele);
备注:
console控制台可以做很多事情,比如或者在线网址上的一些图片
function func1(){ var src= $('img').attr("src"); return src; } var re = func1(); console.log(re);还有一些bug,有些img标签不能被选中
