ugrás a tartalomhoz

CSS tulajdonság lekérdezése?

H.Z. v2 · 2012. Jan. 7. (Szo), 11.57
Van arra – lehetőleg böngészőfüggetlen – megoldás, hogy javascriptből lekérdezzem egy adott elem adott CSS attribútumának aktuális értékét?
(tehát, ha nem állítottam be semmit, akkor se üres stringet kapjak, hanem a tényleges értéket)
Mindezt tisztán javascriptből, mindenféle keretrendszerek nélkül?
Google nem igazán segít. :(

ui: jelen esetben mindegy, hogy property v. attribute? Mert a w3c-nél az előbbi, microsoft.com-on az utóbbit láttam használni...
 
1

Keretrendszer

Poetro · 2012. Jan. 7. (Szo), 14.36
Szinte minden keretrendszerben van erre függvény, lehet azok áttanulmányozásával kellett volna kezdeni. Egyébként pedig a getComputedStyle és a currentStyle tulajdonságokkal kell trükközni. Minimális rugalmassággal ez a következőképpen néz ki:
computedStyle = document.defaultView ? document.defaultView.getComputedStyle( elem, null ) : elem.currentStyle;
value = computedStyle[prop];
Persze a valóságban azért ennél többre lesz szükséged, mivel ez nem hozza még egyező formára az értékeket. Például a jQuery ide vonatkozó része több tucat sor.
2

Köszi szépen. JS-ben annyira

H.Z. v2 · 2012. Jan. 7. (Szo), 15.13
Köszi szépen. JS-ben annyira nem érzem magam otthonosan, hogy neki mertem volna állni mondjuk egy jQuery-t visszafejteni. Szerencsére nincs rá szükségem(na jó, az infóra igen, csak egyelőre nem kell használnom).
Mindössze bosszantott, hogy sem az általam ismert JS/DOM leírásokban, sem a google-n nem találtam semmi erre utalót. A currentStyle meg (legalábbis abban a formában, ahogy a google-n találtam rá példát) sem IE9, sem FF alatt nem adott vissza semmit.
3

currentStyle

Poetro · 2012. Jan. 7. (Szo), 16.04
Pedig a currentStyle IE specifikus, és elég hosszú is volt a pályafutása IE5-IE8-ig. A jQuery forráskódján pedig nem kell semmit visszafejteni. A CSS-sel foglalkozó része a forrásban egy fájl, nem kell a teljes build-elt kódot átnézni.
5

:-)

H.Z. v2 · 2012. Jan. 7. (Szo), 16.35
"visszafejteni"="megérteni" :-)
(arról nem beszélve, hogy már az is komoly erőfeszítést igényel, hogy a saját, fél évvel ezelőtt összerakott, majd félretett maradékaimon kiismerjem magam, pedig azok max. 20-30 sorosak és én írtam őket)
Egyébként most belenéztem abba a kódba és... hát mire abból megtudom a választ, addigra háromszor feladtam volna.

currentStyle meg nem tudom, miért nem ment. Könnyen lehet, hogy valami elírás okozta, kissé kapkodósan próbálkoztam, miután félórányi, a keretrendszereket kizáró keresés sem hozott használható eredményt.
6

currentStyle meg nem tudom,

Karvaly84 · 2012. Jan. 8. (V), 01.45
currentStyle meg nem tudom, miért nem ment.

Nem mondom, hogy tuti: lehet, hogy IE9-ben próbáltad? Mert ott van W3C támogatás, és lehet ott a nem szabványos módszerek nem feltétlen működnek amik a régi verziókon mentek. F12-re előjön a debugger, ott ki tudod választani a melyik böngésző üzemmódon tesztelsz.
7

IE9

H.Z. v2 · 2012. Jan. 8. (V), 20.39
Biztos, hogy IE9-ben próbáltam, de amikor először néztem, akkor nem ment, amikor tegnap próbáltam, akkor ment. Kompatibilitási opciókat nem piszkáltam, minden ugyanúgy állt az első és a második kísérletnél is.
Ami biztosan eltért: első alkalommal a lapba ágyazott JS-t néztem a debuggerrel, második alkalommal a debuggerben a "Watch" alatt nézegettem, mit mutat a document.getElementByID(...).currentStyle
Ami esetleges, de még nem néztem utána, mert már töröltem az eredeti fájlt: lehet, hogy valamit elírtam a programocskámban.

update: most jutottam hozzá, hogy ellenőrizzem. Úgy tűnik, amikor korábban próbáltam, valamit csúnyán elírtam, mert most működik IE9 alatt. Korábban hibaüzenetet nem kaptam a konzolra, de nem is működött a currentStyle.
4

(Elkésett válasz, törölve.)

kuka · 2012. Jan. 7. (Szo), 16.09
(Elkésett válasz, törölve.)