Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> e.target i firefox
jacek21
post 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..
Go to the top of the page
+Quote Post
webdice
post 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 );
}
Go to the top of the page
+Quote Post
kamil4u
post 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/


--------------------
Go to the top of the page
+Quote Post
jacek21
post 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 smile.gif a sposób Webdice już na to pozwala smile.gif 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 smile.gif
A i dziękuje Kamilu za link na pewno przeczytam ^^
Go to the top of the page
+Quote Post
kamil4u
post 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


--------------------
Go to the top of the page
+Quote Post
jacek21
post 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 biggrin.gif)?
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
Go to the top of the page
+Quote Post
webdice
post 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?
Go to the top of the page
+Quote Post
jacek21
post 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 smile.gif.
Go to the top of the page
+Quote Post
webdice
post 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:

  1. <a href="podstrona.html" class="ajax">Podstrona</a>


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 03:43