2012-03-09 4 views
4

다음 코드를 사용 중이며 Chrome에서 완벽하게 작동합니다.'이벤트'는 Firefox에서 사용하는 것과 같습니다.

function dayBind(xyzValue) { 
    if(event.type == 'click') 
     alert('Mouse Clicked') 
} 

'이벤트'변수는 함수에 전달되지 않았지만 여전히 크롬의 경우에는 사용할 수있었습니다. 하지만 파이어 폭스를 사용할 때 '이벤트'는 정의되지 않습니다. I는 다음과 같은 대안을 사용하여 시도 : 또한

var e=arguments[0] || event; 

:

var e=window.event || event; 

그러나 그들 중 누구도 나를 위해 일하지 않는다. Firefox에 '이벤트'가 있습니까?

+1

어떻게 이벤트 리스너가 등록된다? –

+2

'dayBind'는 어떻게 호출됩니까? – josh3736

+0

나머지 코드는 게시하십시오. 이벤트는 xyzValue가되도록 함수로 전달되어야합니다. 그러나 약간의 문맥이 없으면 알기가 어렵습니다. – Cfreak

답변

9

IE와 Chrome이 전역 객체 window에 이벤트를 넣었으므로 가져올 수 있습니다. 파이어 폭스에서는 첫 번째 매개 변수가 이벤트가되도록해야합니다.

function dayBind(event, xyzValue) { 
    var e=event || window.event; 
    if(event.type == 'click') 
     alert('Mouse Clicked') 
} 
+1

그리고 'dayBind'의 함수 호출은 어떻게 생겼을까요? javascript에서이 함수를 '이벤트'변수가없는 곳에서 호출하려고하지만 xyzValue 만 daybind 메서드에 전달할 수 있습니다. –

+0

@AdilMalik jQuery를 사용하는 경우'.bind()'를 사용하면 시간을 절약 할 수 있습니다. jQuery는 크로스 브라우저에 대한 이벤트 바인드를 처리합니다. – xdazz

+3

매우 크고 복잡한 코드로 작업하고 있습니다. .bind()를 사용할 수 없습니다.이 함수에서 이벤트 객체를 어떻게 든 가져와야합니다. 파이어 폭스에서 왜 그렇게 어려운지 궁금합니다. ( –

8

당신이, 당신은 명시 적으로 통과해야 (당신이 일을하지 "jQuery를"이, 당신이 정말로 고려해야 할 질문을 태그 이후)에 "온 클릭"속성 또는 뭔가 핸들러를 설정하는 경우 : 당신은 크로스 브라우저를 작동하는 데 필요한 경우

<button type=button onclick='whatever(event)'>Click Me</button> 
+0

플러그인 콜백 함수에서 작업 중입니다. 직접 호출 할 수 없습니다. 작성시 : onclick = whatever (이벤트) 당신은 onclick 특성의 가치에 자바 스크립트를 쓰고 있습니다, 맞습니까? 다음과 같은 다른 함수에서 같은 함수 호출을 수행 할 수없는 이유는 무엇입니까? function foo() { whatever (event); // this is also javascript } //하지만 FireFox 10.0.2에서는이 기능이 작동하지 않습니다. –

+0

"onclick"속성의 코드는 브라우저가 생성하는 함수의 일부로 생각해야합니다. 이 함수는 자동적으로 "event"매개 변수를 사용할 수 있습니다. 응답에서했던 것처럼 특성을 작성하면 해당 매개 변수가 다른 함수에 전달됩니다. 실제로 jQuery API에 대해 읽고 "onclick"및 기타 유사한 특성을 사용하는 대신 이벤트 처리기를 바인딩하는 데 사용해야합니다. – Pointy

관련 문제