曾经做过一个项目,需求是这样的,鼠标离开网页次数不能超过一定限制,如果超过,就自动退出,不能再访问此网页。
那么这个onblur事件要求兼容IE8及以上、chrome、Firefox。这就有点伤脑筋了。下面我们来看看怎么实现的呢?
//防作弊功能 ,要区分IE与其它浏览器
//IE8的onblur事件会与onclick事件混淆,需要重新定义事件
if((navigator.userAgent.indexOf('MSIE') >= 0) && (navigator.userAgent.indexOf('Opera') < 0)){//IE8浏览器
$(window).on("load", function() {
pageLoad();
});
}else{//其它浏览器
window.onblur = function () {
leavePage();//离开页面时需要处理的事
}
}
var activeElement;
function pageLoad() {
activeElement = document.activeElement;
document.onfocusout = logWindow;
}
function logWindow() {
if (activeElement != document.activeElement) {
activeElement = document.activeElement;
}else {
//在IE8下,如果页面有提交按钮,点击提交时也会触发onblur事件,这边定义了一个标志subFlag来区分是否点击了提交
if(!subFlag){
leavePage();//离开页面时需要处理的事
}
}
}