내 회사 웹 사이트에 하나의 웹 페이지를 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의 문제를 해결합니다.