zoukankan      html  css  js  c++  java
  • 一个简单HTML鼠标事件问题的衍化历程

    第一版

    鼠标经过的时候弹出提示,0.5秒之后自动关闭。(鼠标经过弹出,鼠标移开关闭,在HTML中密集排列A标签的时候,会因鼠标移动而闪烁,完全看不清提示。所以必须有时效否则关闭不了。)

    function mopen()
    {
        document.getElementById('traincontent').style.display = 'block';        
                
    }        

    function mclose()
    {
        document.getElementById('traincontent').style.display = 'none';
    }

    function mclosetime()
    {
        closetimer = window.setTimeout(mclose, 500);
    }

    HTML:

    <a onmouseout="mclosetime()" onmouseover="mopen()"></a>

    第二版(IE8 BUG版)

    上边要求说,不要鼠标经过的时候弹出提示,应该鼠标点击上去再弹出提示,并且,鼠标再次点击的时候,要关闭提示。

    于是我将第一版做了一些修改,想到了把onmouseout 和 onmouseover 改成 onmouseup 和 onmousedown,并且在javascript 中操纵onclick事件。

    不过,由于我一时糊涂,代码冗余,导致了IE8的错乱。。。鼠标点击A标签的时候,提示内容会闪烁,而不是维持着。火狐没有问题(感谢包容。。。)

    function mopen()
    {
        document.getElementById('traincontent').style.display = 'block';        
                document.onclick = mclose;
    }        

    function mclose()
    {
        document.getElementById('traincontent').style.display = 'none';
    }

    function mclosetime()
    {
        document.onclick = mopen;
    }

    HTML:

    <a onmouseup="mclosetime()" onmousedown="mopen()"></a>

    为了排除IE8的问题,我一度梦想JS代码本身很好,是HTML在IE8中的问题,想到了CLEARFIX或者HASLAYOUT,结果都没一毛钱关系。

    最后还是只能对着自己写的JS挑毛病。

    改写成JQUERY以后,问题还是存在。并不是由于我改得不伦不类。。(那句document.onclick = mopen;我竟然不会改写JQUERY。。。)

    改写后:

    function mopen()
    {
        $('#traincontent').css('display','block');        
                document.onclick = mclose;
    }        

    function mclose()
    {
        $('#traincontent').css('display','none');
    }

    function mclosetime()
    {
        document.onclick = mopen;
    }

    第三版

    秉承平时调浏览器差异的瞎猫死老鼠乱撞原则,我扔掉了鸡肋的mclosetime函数(没有时间控制还留它干嘛):

    function mopen()
    {
        $('#traincontent').css('display','block');        
                document.onmousedown = mclose;
    }        

    function mclose()
    {
        $('#traincontent').css('display','none');
    }

    HTML:

    <a onmouseup="mclose()" onclick="mopen()"></a>

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/haimingpro/p/2852566.html
Copyright © 2011-2022 走看看