最近遇到个纳闷的事,本人在使用qrcode库中的decode方法对图片上的二维码进行解码,即读取图片中的二维码信息。该方法老是会弹出两次对话框。弹出的对话框很烦人,因为本人只想要弹出的信息内容,而不是对话框的弹出。因此,想到了一种方法,即截取decode方法弹出的对话框的内容,同时,让对话框无法弹出。即截取了内容,同时又让对话框不再弹出,实在是妙极。
为解决该问题,想了不少方法,偶然间,看到了js aler重写的例子,经过研究与修改,终于实现效果,下面与大家分享js aler重写是如何实现的。
首先,JS代码中,要包含如下的代码。
var oldAlert = window.alert;
window.alert = function(msg)
{
if(msg.indexOf("成功")!=-1)
{
oldAlert(msg);
}
else
{
return;
}
}
上面的代码会导致页面中的所有JS对话框都不会弹出,任何时候任何事件都不会弹出对话框,但是有一种情况例外,那就是,当原对话框中的信息包含“成功”二字时,那么,该对话框就可以弹出,其它都一概不会弹出。
你可以通过下面的函数验证其法是否可行:
function MyAlert()
{
alert("大众计算机学习网欢迎您");
alert("希望有一天也能成功,加油");
}
知识拓展:恢复alert
上面的代码与功能,是重写了alert,那么,又如何恢复原来的alert对话框,让其能正常弹出信息呢?很多地方都这样使用。
delete(window.alert);
alert(1);
可是本人未觉得其可行之处,留待与各位再商讨。