Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] getAttribute('onclick') Internet Explorer
Forum PHP.pl > Forum > Po stronie przeglądarki
AjaxSrajax
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!!!!!!!!!!!!!!!!!!!!!!!!
paziek
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.
AjaxSrajax
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!!! :
paziek
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)
AjaxSrajax
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!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.