JavaScript自动点击链接 防止绕过浏览器访问的方法
做支付宝帐号登录,需要做一个效果,就是打开链接页面的时候,不需要点击链接,直接跳到支付宝登录页面。也就是说,需要做一个自动点击链接的效果。
基本都是用这个:
<bodyonLoad="autoclick('auto')"> <aid='auto'href=".$url."><imgborder='0'src='images/alipaylog.gif'/></a> </body> <scripttype="text/javascript"> functionautoclick(){ lnk=document.getElementById("auto"); lnk.click(); } </script>
这个就IE下可以用,其它浏览器都不可以。还转得铺天盖地呢,浪费大家搜索的时间。
下面这个还比较靠谱,先看看吧:
<bodyonLoad="autoclick('auto')"> <aid='auto'href=".$url."><imgborder='0'src='images/alipaylog.gif'/></a> </body> <scripttype="text/javascript">1: functionautoclick(name) { if(document.all) { //alert(1); document.getElementById(name).click(); } else { varevt=document.createEvent("MouseEvents"); evt.initEvent("click",true,true); //alert(2); document.getElementById(name).dispatchEvent(evt); } } </script>
这个在Chrome和IE下都能正常,但是在Firefox下就不能了。但总比第一个要优秀。
dispatchEvent在Firefox下是有问题的,下面是解决方案:
document.getElementById("me").onclick=function(){ varcard=document.getElementById("card"); if(document.createEvent){ varev=document.createEvent('HTMLEvents'); ev.initEvent('click',false,true); card.dispatchEvent(ev); } else card.click(); }
其中card元素是绑有事件的元素。me元素是想通过点击me元素来调用card的click事件的元素。。。。
问题的重点在于firefox的js引擎需要先创建一个事件:varev=document.createEvent('HTMLEvents');
然后将事件指定为click事件:ev.initEvent('click',false,true);
最后将事件付给card元素:card.dispatchEvent(ev);
card=document.getElementById('id');
varev=document.createEvent('HTMLEvents');
ev.initEvent('click',false,true);
card.dispatchEvent(ev);
由此可见,dispatchEvent是事件委托中的最后一步,将委托事件与调用的元素链接起来,达到调用这个元素的事件的效果。
最后推荐用input来实现,下面是最终解决方案:
<bodyonLoad="autoclick('auto2')"> <inputid="auto2"type="hidden"onClick="javascript:location.href='<?=$url?>'"/> </body> <scripttype="text/javascript">1: functionautoclick(name) { if(document.all) { //alert(1); document.getElementById(name).click(); } else { varevt=document.createEvent("MouseEvents"); evt.initEvent("click",true,true); //alert(2); document.getElementById(name).dispatchEvent(evt); } } </script>
以上这篇JavaScript自动点击链接防止绕过浏览器访问的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。