Hice una página para un cliente e inicialmente estaba trabajando en Chrome y olvidé verificar si funcionaba en Firefox. Ahora, tengo un gran problema porque toda la página se basa en un script que no funciona en Firefox.
Se basa en todos los "enlaces" que tienen un rel
que lleva a ocultar y mostrar la página correcta. No entiendo por qué esto no funciona en Firefox.
Por ejemplo, las páginas tienen la identificación #menuPage
, #aboutPage
y así sucesivamente. Todos los enlaces tienen este código:
<a class="menuOption" rel='#homePage' href="#">Velkommen</a>
Funciona perfectamente en Chrome y Safari.
Aquí está el código:
$(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
fuente
fuente
Respuestas:
Estás declarando (algunos de) tus controladores de eventos incorrectamente:
Necesita que "evento" sea un parámetro para los controladores. WebKit sigue el antiguo comportamiento de IE de usar un símbolo global para "evento", pero Firefox no. Cuando usa jQuery, esa biblioteca normaliza el comportamiento y garantiza que a sus controladores de eventos se les pase el parámetro de evento.
editar - para aclarar: debe proporcionar algún nombre de parámetro; utilizando
event
deja claro lo que se propone, pero se le puede llamare
ocupcake
o cualquier otra cosa.Tenga en cuenta también que la razón por la que probablemente debería usar el parámetro pasado de jQuery en lugar del "nativo" (en Chrome, IE y Safari) es que ese (el parámetro) es un contenedor de jQuery alrededor del objeto de evento nativo. El contenedor es lo que normaliza el comportamiento del evento en los navegadores. Si usa la versión global, no lo entiende.
fuente
Es porque olvidó pasar
event
a laclick
función:En una nota al margen,
e
se usa más comúnmente en lugar de la palabra,event
ya queEvent
es una variable global en la mayoría de los navegadores.fuente
e
de aprender de jQuery. @Pointy