当鼠标悬停在select / alertbox上时,javascript窗口mouseout事件问题

时间:2015-07-10 15:32:19

标签: javascript jquery select alert mouseout

我有一个要求,当用户移出浏览器窗口时,我需要显示一个Exit PopUp。它在Chrome和Mozilla中很好用。问题出在魔鬼IE上。页面中有一个注册表单。

所以在IE中下面是我面临的两个无法解决的问题。

  1. 当用户尝试选择此鼠标输出事件触发选择框的选项并退出弹出窗口

  2. 有条款和条件复选框,当用户尝试提交时,它会显示警告而不进行检查。当我点击警告框上的OK按钮时,mouseout事件会触发并显示我的Exit PopUp。

  3. 如何避免这两件事。这些问题阻止用户注册我们的网站。

    以下是我的代码

    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中也遇到了这个警报框问题。

0 个答案:

没有答案