Подтвердить что ты не робот

Как я могу заставить event.srcElement работать в Firefox и что это значит?

на веб-сайте моей компании есть оператор if, который делает одну веб-страницу несопоставимой с firefox

if(event.srcElement.getAttribute("onclick") == null){ 
...code..
document.mainForm.submit();
}

Я прокомментировал условия if if, и теперь он работает с forefox. Мой вопрос: что такое event.srcElement.getAttribute( "onclick" ), важно ли это, это вызовет проблемы в будущем. также, есть ли что-то подобное, я могу заменить условие так, чтобы он работал на firefox?

Edit:

 function gotoRDManagerPT(PTId, bDDetailId) {
        if(!proceed()) return false;
        var target = event.target || event.srcElement; 
        if(event.target.getAttribute("onclick") == null) { 
            document.mainForm.displayRDManagerPT.value = "true";
            document.mainForm.PTId.value = PTId;
            document.mainForm.bDDetailId.value = bDDetailId;
            document.mainForm.submit();
        }
    }
4b9b3361

Ответ 1

srcElement является собственностью, первоначально исходящей из IE. Стандартизованное свойство target:

var target = event.target || event.srcElement;

if(target.onclick == null) { // shorter than getAttribute('onclick')
    //...
    document.mainForm.submit();
}

Также посмотрите quirksmode.org - Свойства событий для получения более подробной информации о браузере.


Что касается вопроса о том, что он делает:

event.target/event.srcElement содержит ссылку на элемент, на который был поднят event. getAttribute('onclick') == null проверяет, назначен ли элемент управления кликом элементу через встроенную обработку событий.

Это важно? Мы не можем сказать, потому что мы не знаем, что делает ...code...

Ответ 2

В IE объект события уже доступен в объекте окна; в Firefox он передан как параметр в обработчике событий.

Пример

JavaScript:

function toDoOnKeyDown(evt)

{

    //if window.event is equivalent as if thie browser is IE then the event object is in window
    //object and if the browser is FireFox then use the Argument evt

    var myEvent = ((window.event)?(event):(evt));
    //get the Element which this event is all about 

    var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
    //To Do -->

}

HTML:

<input type="text" id="txt_Name" onkeydown="toDoOnKeyDown(event);"/>

Как вы заметили, когда мы вызвали функцию внутри html, мы добавили параметр event на всякий случай, если браузер является Firefox.

Я прочитал в статье, что объект события в IE называется window.event, а в Firefox мы должны указать его как параметр.

Если вам нужно, чтобы он был прикреплен в коде:

document.getElementById('txt_Name').onkeydown = function(evt) {
    var myEvent = ((window.event)?(window.event):(evt));


    // get the Element which this event is all about 

    var Element = ((window.event)?(event.srcElement):(evt.currentTarget));
    // To Do -->
};