Как судить о типе события IE в JavaScript - PullRequest
0 голосов
/ 21 февраля 2012

узнать код JS из книги сервалов как

function doSomething(e) {
    if (!e) {
        var e = window.event;
        alert("this is IE!");
    } 
}

предположим, у меня есть элемент

<h1 onclick="doSomething(event)">Hello World2</h1>

когда я щелкаю по нему, он не предупреждает в IE (по крайней мере, в IE6), способ, которым я пользуюсь, не корректен?

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

Я должен отправить параметр события, даже не так ли? Могу ли я судить о типе события IE без параметра?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2012

Ты еще не написал никаких условий, поэтому он ничего не делает,

Согласно вашему коду. Когда вы нажимаете на ссылку Hello world, событие проходит, и вы пишете так (! E), что ложно, поэтому оно ничего не делает

Попробуйте, это предупредит

function doSomething(e) {
    if (e) {
        var e = window.event;
        alert("this is IE!");
    } 
}

Если вы хотите использовать оконное событие, вы можете сделать как window.event.target для firefox и для ie window.event.srcElement

0 голосов
/ 21 февраля 2012

То, что вы имели в виду, было

function doSomething(e) {
  if (window.event) {
    e = window.event;
    alert("this is IE!");
  }
  // here you can use e in either IE or Gecko/webkit
}
0 голосов
/ 21 февраля 2012

Это потому, что с тем, что у вас есть, e всегда является ссылкой на Event объект.event в атрибуте onclick преобразуется в window.event в IE, в то время как в браузерах, таких как Firefox, которые не поддерживают window.event, в области действия значения атрибута доступна переменная event.См. Также этот ответ .

Ситуация, в которой вам нужно проверить наличие window.event, - это когда вы назначаете обработчик событий с помощью свойства:

var h1 = document.getElementsByTagName("h1")[0];
h1.onclick = doSomething;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...