繁体   English   中英

Firefox和Internet Explorer中的全窗口onClick处理程序

[英]Full window onClick handler in Firefox and Internet Explorer

我希望事件处理程序在有人单击窗口的任何位置时触发(因此,如果他们单击菜单以外的其他位置,则可以清除菜单)。 以下在Safari中有效

   function checkwho(ev) {
      obj=(window.external) ? event.srcElement : ev.target;
      var type=obj.nodeName;
      if ((type == 'BODY') || (type == 'HTML') || (type == 'DIV')) clearmenus(); 
   }

   self.onclick=checkwho;

但是它在Firefox或Internet Explorer 6中不起作用,即不会调用处理程序。 如何在Firefox和Internet Explorer中使其工作?

为了可能有所帮助,以下组件可在IE7 +,Safari,Firefox和Chrome中运行:

<body onclick="clearmenus();">

...或“以编程方式”:

document.getElementsByTagName("body")[0].onclick = function(){ clearmenus(); };

jQuery使这种问题很容易以跨浏览器的方式解决。

将onclick事件处理程序绑定到隐藏菜单的主体,并将另一个绑定到停止事件传播的菜单元素。

不久前,我写了一个脚本来确定是否用JavaScript单击了“外部”元素

隐藏这样的菜单的一个更好的选择是使用onblur事件。

<div id="menu-div" onclick="showMenu('menu');" onblur="hideMenu('menu');">
    <ul id="menu">
        <li>Thing1</li>
    </ul>
</div>

Javascript:

function showMenu(id)
{
    var me = document.getElementById(id);
    me.style.display = 'block';
}

function hideMenu(id)
{
    var me = document.getElementById(id);
    me.style.display = 'none';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM