我有一个要求,当用户移出浏览器窗口时,我需要显示一个Exit PopUp。它在Chrome和Mozilla中很好用。问题出在魔鬼IE上。页面中有一个注册表单。
所以在IE中下面是我面临的两个无法解决的问题。
当用户尝试选择此鼠标输出事件触发选择框的选项并退出弹出窗口
有条款和条件复选框,当用户尝试提交时,它会显示警告而不进行检查。当我点击警告框上的OK按钮时,mouseout事件会触发并显示我的Exit PopUp。
如何避免这两件事。这些问题阻止用户注册我们的网站。
以下是我的代码
var mouseX = 0;
var mouseY = 0;
var mouseIsIn = true;
window.addEventListener("mouseout", function(e){
mouseX = e.pageX;
mouseY = e.pageY;
if ((mouseY >= 0 && mouseY <= window.innerHeight) && (mouseX >= 0 && mouseX <= window.innerWidth))
return;
document.getElementById("exitPop").style.display = 'block';
mouseIsIn = false;
}, false);
window.addEventListener("mouseover", function(e){
if(mouseIsIn)
return;
mouseIsIn = true;
},false);
为克服这两个问题,我需要做些哪些改变?
欢迎使用jQuery解决方案。
更新 不知何故,我设法通过添加以下代码来修复Selectbox问题
window.onmouseout = function(e){
inWin--;
setTimeout(function(){
if(isIEbrowser) {
if (e.toElement == null && e.relatedTarget == null)
inWin--;
if (e.srcElement !== undefined && e.srcElement.nodeName != undefined && (e.srcElement.nodeName == 'SELECT' || e.srcElement.nodeName == 'OPTION'))
inWin=1;
}
if(inWin <=0)
{
document.getElementById("exitPop").style.display = 'block';
}
}, 100);}window.onmouseover = function(e){ inWin=1;}
但无法修复警报框问题。令人惊讶的是,我在IE和Firefox中也遇到了这个警报框问题。