e.target i firefox |
e.target i firefox |
26.12.2012, 12:00:04
Post
#1
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) |
Witam ponownie nie mogę sobie poradzić z mozill'a, o ile w safari, operze, chromie, IE działą poprawnie o tyle w FF nie :/
problem wygląda następująco. Mam oto taką funckję: CODE function wywolaj(e) { if(!e){e = window.event;} var ktory = e.target || e.srcElement; var g_z = ktory.id || ktory.className; return g_z; } i chcę, żeby po każdym kliknięciu w strone sprawdzałą w jaki element klikliśmy. No więc wywołuje sobie funkcję: document.onclick = function() { wywolaj(); } No i coś takiego wszędzie działa oprócz FF wywala taki błąd Kod TypeError: e is undefined więc podczas wywoływania funkcji dodałem: wywolaj('event'); no i o ile to pomogło z e to już w następnej lini wystąpił błąd, że ktory nie jest zdefiniowany :| nie wiem jak się do tego zabrać na FF. dodam, że jeśli w funkcji wywolaj dodam alert(g_z); i wywolam ja: document.onclick = wywolaj; to dziala poprawnie, powiedźcie mi jak wywolać tą funkcję, żeby działąła i żebym mógł sprawdzić co zwraca.. |
|
|
26.12.2012, 12:30:30
Post
#2
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 |
Kod document.onclick = function( event )
{ wywolaj( event ); } |
|
|
26.12.2012, 12:52:26
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Lub po po postu:
Kod document.onclick = wywolaj; Gdy korzystasz z tylko jednej funkcji przy tym zdarzeniu. Co de facto sprowadza się do tego samego o czym pisze webdice, tylko jest krótsze. Generalnie zdarzenia w JS to w miarę trudny temat i, żeby je naprawdę zrozumieć musisz pisać kod, a nie tylko czytać. Mimo wszystko polecam artykuł: http://webhelp.pl/artykuly/obsluga-zdarzen-w-przegladarkach/ -------------------- |
|
|
26.12.2012, 13:53:37
Post
#4
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) |
Kamil co do Twojego kawałku kodu jest okey, ale nie mogłem go zastosować zbytnio do mojego skryptu(lub też po prostu nie potrafiłem). Miałem napisać, ze gdy w ten sposób wywołuje to działa, ale zaś nie mogę dostać się do tego co zwraca funkcja wywolaj a sposób Webdice już na to pozwala a propo nie wiedziałem, że funkcje anonimowe też mogą przyjmować parametry ;|
Szczerze mówiąc już nie wiedziałem jak do tego podejść bo próbowałem na sto sposobów, więc bardzo dziękuje za pomoc A i dziękuje Kamilu za link na pewno przeczytam ^^ |
|
|
26.12.2012, 14:13:56
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 350 Pomógł: 512 Dołączył: 4.01.2009 Skąd: Wrocław / Świdnica Ostrzeżenie: (0%) |
Jak już przeczytasz artykuł to dowiesz się, że pierwszy pusty parametr jest odpowiedzialny za event. Dlatego możesz tak zrobić.
Cytat nie wiedziałem, że funkcje anonimowe też mogą przyjmować parametry Bo to jest z reguły nieprzydatne, poza zdarzeniami właśnie . Przykład: Kod window.onclick = function(a,b){ alert(a); alert(b); } window.onclick(1,2); //tylko po co wywoływać to ręcznie w praktyce to nie przychodzi mi do głowy :) Kliknij też gdziekolwiek to zobaczysz, że pod pierwszą wolną zmienną( w tym przypadku a ) podpisze się event. Musisz samemu popróbować, jak już pisałem, to w końcu będzie to dla Ciebie oczywiste. Pozdrawiam -------------------- |
|
|
26.12.2012, 15:12:07
Post
#6
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) |
A skoro już jest temat to miałbym jeszcze z dwa pytania, pierwsze na odpowiedzi której bardziej mi zalezy brzmi:
Co zrobić żeby pobrać oczywiście przez php $_get['id'] skoro link wygląda następująco: http://google.pl/#!strona?id=1 Z tego co czytałem indeksowanie stron w ajaxie wymaga #! a w takim przypadku $_get coś nie działa(przynajmniej mi )? jak sobie z tym radzić ? No i drugie pytanie: istnieje jakaś funkcja/znak specjalny, który zastępuje ciąg znaków czy trzeba sobie wycinać pożądany fragment ? przykład dajmy na tym samym linku tylko to mi przychodzi tak na szybko do glowy: if(location.hash == 'strona'*) *ciąg znaków w naszym wypadku: ?id=1 Ten post edytował jacek21 26.12.2012, 15:13:04 |
|
|
26.12.2012, 15:16:44
Post
#7
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 |
Ad 1. Nie da się. # i wszystko po nie jest wysłane do serwera.
Ad 2. replace? |
|
|
26.12.2012, 15:47:25
Post
#8
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 13.06.2012 Ostrzeżenie: (0%) |
Czyli trzeba by pobierać wartość z klikniętego odnośnika do odpowiedeniej strony i przekazanie do pliku php, ale przez to nie działąłoby już wczytanie strony poprzez wklepanie adresu do paska url.
To jak to robić odpuścić indeksowanie dla podstron ? hmm nielogiczne ponieważ na tych podstronach(powiedzmy, ze sa to newsy) jest najwięcej niformacji, czyli co pozostaje jedynie tradycyjne wczytywanie stron przez php ? czy jest jakiś inny sposób ? A może poprzez wycięcie id przez JS i przekazanie(ajax'em) do php ? tak to się robi ;> skoro piszesz replace to rozumiem, że nie ma czegoś takiego . |
|
|
26.12.2012, 15:53:18
Post
#9
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 |
Tworzysz zwykły link:
Kod $( '.ajax' ).click( function( event ) { $( '.content' ).load( this.href ); location.hash = this.href; event.preventDefault(); }); Możesz skorzystać też z history.pushState(), ale to już HTML5. |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 03:43 |