![]() |
![]() ![]() |
![]() |
![]()
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 ![]() 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. ![]() HELP!!!!!!!!!!!!!!!!!!!!!!!! Ten post edytował AjaxSrajax 1.08.2008, 00:04:54 |
|
|
![]()
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. |
|
|
![]()
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 ![]() 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!!! : |
|
|
![]()
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? ![]() Ten post edytował paziek 2.08.2008, 20:58:35 |
|
|
![]()
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 ![]() Jeszcze raz dzieki wielkie. Pozdrawiam serdecznie! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 09:51 |