[javascript] Firefox에서 event.srcElement를 어떻게 작동시킬 수 있으며 그 의미는 무엇입니까?

내 회사 웹 사이트에 하나의 웹 페이지를 firefox와 호환되지 않게 만드는 if 문이 있습니다.

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

나는 if 문 조건을 주석 처리했으며 이제 forefox와 함께 작동합니다. 제 질문은 event.srcElement.getAttribute ( “onclick”)가 무엇인지, 그것이 중요한지, 그것이 미래에 문제를 일으킬 것인가입니다. 또한 파이어 폭스에서 작동하도록 조건을 대체 할 수있는 비슷한 것이 있습니까?

편집하다:

 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();
        }
    }



답변

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...


답변

IE에서 이벤트 개체는 이미 창 개체에서 사용할 수 있습니다. Firefox에서는 이벤트 핸들러에서 매개 변수로 전달됩니다.

자바 스크립트 :

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 -->
};


답변

다음과 같이 빠른 수정을 시도하십시오.

코드에 포함 :

let target = event.target || event.srcElement;

그리고 변경

event.srcElement.XXXXX to target.XXXXX

이것은 Firefox의 문제를 해결합니다.


답변