1. ホーム
  2. javascript

[解決済み] FirefoxでReferenceError: event is not definedエラーが発生する。

2022-02-09 18:40:13

質問

クライアント用のページを作ったのですが、最初はChromeで作業していて、Firefoxで動作するかどうか確認するのを忘れていました。現在、ページ全体がFirefoxで動作しないスクリプトに基づいているため、大問題になっています。

このリンクは、すべてのquot;リンクに 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();


});

ハンドラのパラメータとして"event"が必要です。WebKit は、"event" にグローバル シンボルを使用する IE の古い動作に従いますが、Firefox はそうではありません。 jQuery を使用している場合、このライブラリは動作を正常化し、イベント ハンドラにイベント パラメータが渡されるようにします。

編集 - を提供する必要があります。 一部 パラメータ名; を使って event は何を意図しているのかを明確にしますが、これを e または cupcake など、何でもOKです。

また、(ChromeやIE、Safariでは)おそらくネイティブのパラメータではなく、jQueryから渡されたパラメータを使うべき理由は、そのパラメータがネイティブのイベントオブジェクトをjQueryで包んでいるためであることにも注意してください。ラッパーは、ブラウザ間でイベントの動作を正規化するものです。グローバルバージョンを使用した場合は、このようなことはありません。