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>