[javascript] ReferenceError : Firefox에서 이벤트가 정의되지 않았습니다.

클라이언트 용 페이지를 만들었는데 처음에는 Chrome에서 작업 중이었고 Firefox에서 작동하는지 확인하는 것을 잊었습니다. 이제 전체 페이지가 Firefox에서 작동하지 않는 스크립트를 기반으로하기 때문에 큰 문제가 있습니다.

rel올바른 페이지를 숨기고 표시하도록 이끄는가있는 모든 “링크”를 기반으로합니다 . Firefox에서 이것이 작동하지 않는 이유를 이해할 수 없습니다.

인스턴스 페이지가 ID를 위해 #menuPage, #aboutPage그리고에 이렇게. 모든 링크에는 다음 코드가 있습니다.

<a class="menuOption" rel='#homePage' href="#">Velkommen</a> 

Chrome과 Safari에서 완벽하게 작동합니다.

다음은 코드입니다.

$(document).ready(function(){

//Main Navigation


$('.menuOption').click(function(){

  event.preventDefault();
  var categories = $(this).attr('rel');
  $('.pages').hide();
  $(categories).fadeIn();


});

// HIDES and showes the right starting menu
    $('.all').hide();
    $('.pizza').show();


// Hides and shows using rel tags in the buttons    
    $('.menyCat').click(function(event){
        event.preventDefault();
        var categori = $(this).attr('rel');
        $('.all').hide();
        $(categori).fadeIn();
        $('html,body').scrollTo(0, categori);

    });


}); 



답변

이벤트 핸들러 (일부)를 잘못 선언하고 있습니다.

$('.menuOption').click(function( event ){ // <---- "event" parameter here

    event.preventDefault();
    var categories = $(this).attr('rel');
    $('.pages').hide();
    $(categories).fadeIn();


});

핸들러에 대한 매개 변수가 되려면 “이벤트”가 필요합니다. WebKit은 “이벤트”에 전역 기호를 사용하는 IE의 이전 동작을 따르지만 Firefox는 그렇지 않습니다. jQuery를 사용하는 경우 해당 라이브러리는 동작을 정규화하고 이벤트 핸들러가 이벤트 매개 변수를 전달하는지 확인합니다.

편집 – 명확히 : 사용자가 제공해야 할 몇 가지 매개 변수 이름을; 사용 event당신이 무슨 의도 취소,하지만 당신은 그것을 호출 할 수 있습니다 차종을 e하거나 cupcake다른 사람 또는 아무것도.

또한 “기본”매개 변수 (Chrome 및 IE 및 Safari) 대신 jQuery에서 전달 된 매개 변수를 사용해야하는 이유는 매개 변수 (매개 변수)가 기본 이벤트 객체를 둘러싼 jQuery 래퍼이기 때문입니다. 래퍼는 브라우저에서 이벤트 동작을 정규화하는 것입니다. 글로벌 버전을 사용하면 이해하지 못합니다.


답변

당신이 통과하는 것을 잊었다 때문이다 eventclick기능 :

$('.menuOption').on('click', function (e) { // <-- the "e" for event

    e.preventDefault(); // now it'll work

    var categories = $(this).attr('rel');
    $('.pages').hide();
    $(categories).fadeIn();
});

참고로 e는 대부분의 브라우저에서 전역 변수 event이기 때문에 단어와는 반대로 더 일반적으로 사용됩니다 Event.


답변