Показать сообщение отдельно
  #21 (permalink)  
Старый 06.01.2013, 07:53
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

ie8 не хочет работать с which при событии onclick

Вот этот :
fixEvent = function (e) {
    e = e || window.event;

    if (!e.which && e.button) {
        e.which = e.button & 1 ? 1 : ( e.button & 2 ? 3 : (e.button & 4 ? 2 : 0) );
    }
    return e;
}

.. или этот пример:
function fixWhich(e) {
  if (!e.which && e.button) { // если which нет, но есть button...
    if (e.button & 1) e.which = 1;      // левая кнопка
    else if (e.button & 4) e.which = 2; // средняя кнопка
    else if (e.button & 2) e.which = 3; // правая кнопка
  }
}


не работают в IE8

e.which при нажатие на левую клавишу выдает undefined, на правую - не реагирует никак


Зато e.button при нажатие на левую клавишу выдает 0 !



Пример:

<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
    
    <input type="button" id="a" value="сработает в ie8">
    <input type="button" id="b" value="не сработает в ie8">

    <script>
      var a = document.getElementById("a"),
          b = document.getElementById("b"),
          fixEvent = function (e) {
			e = e || window.event;
			if (!e.which && e.button) {
				e.which = e.button & 1 ? 1 : ( e.button & 2 ? 3 : (e.button & 4 ? 2 : 0) );
			}
            return e;
          };
      
		a.onmousedown = function (e) {
			e = fixEvent(e);
        
			if (e.which !== 1) {
				return;
            }
        
			alert("привет мир");
		}
      
		b.onclick = function (e) {
			e = fixEvent(e);
        
			if (e.which !== 1) {
				return; // e.which в ie8 на левую клавишу мыши выдаст undefined
            }
        
			alert("привет мир");
		}
    </script>

  </body>
</html>

Последний раз редактировалось dmitry111, 06.01.2013 в 20:25.
Ответить с цитированием