Полное окно обработчика onClick в Firefox и Internet Explorer - PullRequest
1 голос
/ 21 декабря 2009

Я бы хотел, чтобы обработчик событий срабатывал всякий раз, когда кто-то щелкает в каком-либо месте окна (поэтому я могу убрать меню, если они щелкают где-то, кроме меню). Следующие работы в 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?

Ответы [ 4 ]

1 голос
/ 21 декабря 2009

jQuery делает эту проблему очень легко решаемой в кросс-браузерной манере.

Привязать обработчик события onclick к телу, которое скрывает меню, а другой к элементу меню, который останавливает распространение события.

1 голос
/ 21 декабря 2009

Что может помочь, в IE7 +, Safari, Firefox и Chrome работает следующее:

<body onclick="clearmenus();">

... или "программно":

document.getElementsByTagName("body")[0].onclick = function(){ clearmenus(); };
0 голосов
/ 22 декабря 2009

Некоторое время назад я написал сценарий для Определите, был ли какой-либо "Внешний" элемент нажат на JavaScript .

0 голосов
/ 21 декабря 2009

Лучшим вариантом для сокрытия подобного меню было бы использование события 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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...