前端代码:
<p align="center" id="ScanCode"></p>
<button id = "stopScanCode">取消</button>
上面代码就不多解释了,基本的html代码,有的前端使用html5canvas的,也是可以的。下面是js的代码:
var ScanCode;
ScanCode();
function ScanCode(){
$("#ScanCode").qrcode({
reder:"table",
width:120,
height:120,
text:"18864513320545"
})
clearTimeout(ScanCode );
ScanCode = setTimeout(ScanCode(),3000);
}
$("#stopScanCode").bind('click',function(){
$("#ScanCode").html("");
clearTimeout(ScanCode );
})
上面代码中,轮询使用的setTimeout()和clearTimeout();即延时方法,这个方法比setInterval(function(){},3000)和clearInterval()方法都可以,但是实际运行后结果可能有偏差,我查阅资料发现两个方法的区别如下:
setTimeout()和clearTimeout()两个方法是每间隔一段时间就执行一次方法,固定时间下返回结果的时间间隔也是固定的,但是setInterval(function(){},3000)和clearInterval()是把请求放到一个队列里,然后再执行,如果请求多的情况下,返回的时间就长,即返回结果的时间间隔并不固定,所以对于多次轮询的时候建议使用setTimeout方法。
注意点:
每次轮询完毕后都要记得关闭轮询,不然长时间轮询会耗费系统性能
注意点:
使用qrcode生成的二维码,使用谷歌浏览器的时候,手机扫码扫描无反应,但是ie或其他浏览器无此问题,查询之后发现谷歌浏览器下生成二维码对显卡有要求,如果你使用谷歌浏览器能成功生成二维码,但是手机扫码无反应,大概率就是此问题,建议更换浏览器再试。