Zrobiłem stronę dla klienta i początkowo pracowałem w przeglądarce Chrome i zapomniałem sprawdzić, czy działa w przeglądarce Firefox. Teraz mam duży problem, ponieważ cała strona jest oparta na skrypcie, który nie działa w Firefoksie.
Opiera się na wszystkich „linkach”, które mają rel
oznaczenie prowadzące do ukrycia i wyświetlenia właściwej strony. Nie rozumiem, dlaczego to nie działa w przeglądarce Firefox.
Dla stron przykład mieć identyfikator #menuPage
, #aboutPage
i tak dalej. Wszystkie linki mają ten kod:
<a class="menuOption" rel='#homePage' href="#">Velkommen</a>
Działa doskonale w Chrome i Safari.
Oto kod:
$(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
źródło
źródło
Odpowiedzi:
Deklarujesz (niektóre) swoje programy obsługi zdarzeń nieprawidłowo:
Musisz „zdarzenie” być parametrem dla programów obsługi. WebKit naśladuje stare zachowanie IE, polegające na używaniu globalnego symbolu dla „zdarzenia”, ale Firefox tego nie robi. Gdy używasz jQuery, ta biblioteka normalizuje zachowanie i zapewnia, że programy obsługi zdarzeń otrzymują parametr zdarzenia.
edytuj - doprecyzuj: musisz podać jakąś nazwę parametru; stosując
event
wyjaśnia, co zamierza, ale można to nazwaće
lubcupcake
czy cokolwiek innego.Zauważ również, że powodem, dla którego prawdopodobnie powinieneś używać parametru przekazanego z jQuery zamiast „natywnego” (w Chrome, IE i Safari) jest to, że ten parametr (parametr) jest opakowaniem jQuery wokół natywnego obiektu zdarzenia. Opakowanie normalizuje zachowanie zdarzeń w przeglądarkach. Jeśli używasz wersji globalnej, tego nie rozumiesz.
źródło
To dlatego, że zapomniałeś przejść
event
doclick
funkcji:Na marginesie,
e
jest częściej używane w przeciwieństwie do słowa,event
ponieważEvent
jest zmienną globalną w większości przeglądarek.źródło
e
z jQuery! @Pointy