Ich habe eine Seite für einen Client erstellt und arbeitete ursprünglich in Chrome und habe vergessen zu überprüfen, ob sie in Firefox funktioniert. Jetzt habe ich ein großes Problem, da die gesamte Seite auf einem Skript basiert, das in Firefox nicht funktioniert.
Es basiert auf allen "Links", die dazu rel
führen, dass die richtige Seite ausgeblendet und angezeigt wird. Ich verstehe nicht, warum dies in Firefox nicht funktioniert.
Zum Beispiel Seiten die ID haben #menuPage
, #aboutPage
und so weiter. Alle Links haben diesen Code:
<a class="menuOption" rel='#homePage' href="#">Velkommen</a>
Es funktioniert perfekt in Chrome und Safari.
Hier ist der Code:
$(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);
});
});
javascript
jquery
html
firefox
Måns Dahlström
quelle
quelle
Antworten:
Sie deklarieren (einige) Ihrer Event-Handler falsch:
Sie benötigen "event", um ein Parameter für die Handler zu sein. WebKit folgt dem alten Verhalten des IE, ein globales Symbol für "Ereignis" zu verwenden, Firefox jedoch nicht. Wenn Sie jQuery verwenden, normalisiert diese Bibliothek das Verhalten und stellt sicher, dass Ihren Ereignishandlern der Ereignisparameter übergeben wird.
bearbeiten - klären: Sie bereitstellen müssen einige Parameter - Namen; indem
event
er deutlich macht , was Sie beabsichtigen, aber man kann es nennene
odercupcake
oder irgendetwas anderes.Beachten Sie auch, dass der Grund, warum Sie wahrscheinlich den von jQuery übergebenen Parameter anstelle des "nativen" (in Chrome und IE und Safari) übergeben sollten, darin besteht, dass dieser (der Parameter) ein jQuery-Wrapper um das native Ereignisobjekt ist. Der Wrapper normalisiert das Ereignisverhalten in allen Browsern. Wenn Sie die globale Version verwenden, erhalten Sie das nicht.
quelle
Es ist, weil Sie vergessen haben,
event
in dieclick
Funktion zu übergeben:Auf einer Seite beachten,
e
wird häufiger im Gegensatz zu dem Wort verwendet ,event
daEvent
eine globale Variable in den meisten Browsern ist.quelle
e
von jQuery abgeholt ! @Pointy