Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js] getAttribute('onclick') Internet Explorer
AjaxSrajax
post 1.08.2008, 12:05:14
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 22.03.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam,

Mam taki problem:

Potrzebuję wydobyć atrybut z onclicka w postaci stringa.

Kod
var cel=document.getElementById("ajdi");
  var str=cel.getAttribute("onclick");
alert(str);


Normalne przeglądarki zwracają łańcuch tekstowy.

nIEnormalne zwracają funkcję anonimową, np:

Kod
function anonymous(){
  funkcja();
  }


Potrzebuję łańcucha, bo muszę go obrobić przez str.split

Jakieś sugestie? Da się w ogóle?

Nie chcę wykorzystywać prototype, ani żadnych innych bibliotek.

Błagam o pomoc biggrin.gif

pzdr,

Problem po części rozwiązałem, ale nadal jestem w martwym punkcie.

żeby pobrać string w IE trzeba się posłużyć kodem:
Kod
var cel=document.getElementById("ajdi");
var str=cel.attributes["onclick"].value;


Teraz mam stringa, ale znowu jest problem z zapisaniem atrybutu.

w normalnych brołserach, np:

Kod
var hip="hop();";
var rap=document.getElementById("ajdi");
rap.setAttribute("onclick", hip);


w tych mnIEj:

Kod
var rap=document.getElementById("ajdi");
rap.onclick=function(){hop();};


Wszystko niby ładnie pięknie, do czasu.... aż się chce znowu pobrać wartość atrybutu.
Wtedy IE w prezentowanym na pocz. przykładzie na jego pobranie zwraca wartość null,
tak jak by to już nie był atrybut, tylko wartość w tablicy ONCLICK.
sciana.gif
HELP!!!!!!!!!!!!!!!!!!!!!!!!

Ten post edytował AjaxSrajax 1.08.2008, 00:04:54
Go to the top of the page
+Quote Post
paziek
post 1.08.2008, 23:11:18
Post #2





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Ja to u siebie rozwiązałem tak, że dodaje dodatkowy atrybut - xonclick, aby 'odpalać' używam addEventListner/attachEvent i eval'uje wartość.
Taki atrybut 'xonclick' da się pobrać/ustawić tak samo we wszystkich przeglądarkach.
Go to the top of the page
+Quote Post
AjaxSrajax
post 2.08.2008, 18:09:56
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 22.03.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Ziomuś jesteś wielki, tak jak xonclick.
Zomdyfikowałem i ułatwiłem Twoją metodę.

xonclick odczytuję i zapisuję przez get/setAttribute.

Onclick zapisuję we wszystkich przeglądarkach za pomocą:

Kod
document.getElementById.onclick=fucntion(){mojaFunkcja(par1,par2,...,parN);return false;};


Nie trzeba addEventListener/attachEvent...
Wszystko hasa aż miło biggrin.gif

A, że tak jeszcze spytam o drobnostkę. Jak symulować return false dla attachEvent?
Dla addEventListener wyczytałem tu na forum, że preventDefault();


Dzięki i szacuneczek!!! :
Go to the top of the page
+Quote Post
paziek
post 2.08.2008, 20:49:51
Post #4





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


tak, dla addEventListener to jest event.preventDefault(); gdzie event to zmienna z eventem
na przykładzie
Kod
document.addEventListener('click',lol,false);//dla w3c
function lol(e) {
   e.preventDefault();
   //tutaj jakis kod, ktory ma zostac wykonany zamiast domyslnej akcji
}

document.attachEvent('onclick',lolIE);//dla ie
function lolIE(e) {
   e.returnValue=false;//a tutaj dla IE
   //tutaj jakis kod, ktory ma zostac wykonany zamiast domyslnej akcji
}


aczkolwiek return false; też zatrzyma wykonywanie domyślnej akcji (zdaje się), tyle, że wtedy zatrzyma również kod, który chciałbyś wykonać po zatrzymaniu tejże akcji (czaisz?tongue.gif)

Ten post edytował paziek 2.08.2008, 20:58:35
Go to the top of the page
+Quote Post
AjaxSrajax
post 2.08.2008, 21:16:05
Post #5





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 22.03.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Mi chodzi tylko o to, zeby link nie podazal sladem href-a. Wszystko mi wyjasniles, a to czego nie wiem, to juz sobie grzecznie sprawdze.
Najwazniejsze, ze mi rutinka dziala, bo chyba bym sie pochlastal jak bym tego nie zrobil ;p - taki zarcik biggrin.gif
Jeszcze raz dzieki wielkie.
Pozdrawiam serdecznie!
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: 31.07.2025 - 09:51