J'ai créé une page pour un client et je travaillais initialement dans Chrome et j'ai oublié de vérifier si cela fonctionnait dans Firefox. Maintenant, j'ai un gros problème car toute la page est basée sur un script qui ne fonctionne pas dans Firefox.
Il est basé sur tous les «liens» qui ont un rel
qui conduit à cacher et à afficher la bonne page. Je ne comprends pas pourquoi cela ne fonctionne pas dans Firefox.
Par exemple, les pages ont l'identifiant #menuPage
, #aboutPage
et ainsi de suite. Tous les liens ont ce code:
<a class="menuOption" rel='#homePage' href="#">Velkommen</a>
Cela fonctionne parfaitement dans Chrome et Safari.
Voici le 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
la source
la source
Réponses:
Vous déclarez (certains de) vos gestionnaires d'événements de manière incorrecte:
Vous avez besoin de "event" comme paramètre pour les gestionnaires. WebKit suit l'ancien comportement d'IE consistant à utiliser un symbole global pour «événement», mais Firefox ne le fait pas. Lorsque vous utilisez jQuery, cette bibliothèque normalise le comportement et garantit que vos gestionnaires d'événements reçoivent le paramètre d'événement.
modifier - pour clarifier: vous devez fournir un nom de paramètre; en utilisant
event
Affirme clairement ce que vous avez l' intention, mais vous pouvez l' appelere
oucupcake
ou quoi que ce soit d' autre.Notez également que la raison pour laquelle vous devriez probablement utiliser le paramètre transmis depuis jQuery au lieu du paramètre "natif" (dans Chrome, IE et Safari) est que celui-ci (le paramètre) est un wrapper jQuery autour de l'objet événement natif. L'encapsuleur est ce qui normalise le comportement des événements dans les navigateurs. Si vous utilisez la version globale, vous ne comprenez pas cela.
la source
C'est parce que vous avez oublié de passer
event
dans laclick
fonction:Sur une note latérale,
e
est plus couramment utilisé par opposition au motevent
car ilEvent
s'agit d'une variable globale dans la plupart des navigateurs.la source
e
de jQuery! @Pointy