Cross-Browser (IE8-) getComputedStyle mit Javascript?
Seit IE8 nicht unterstützen getComputedStyle
wir können nur currentStyle
. Es wird jedoch nicht wieder die echte "berechnete" Wert für einige Eigenschaften.
Beispiel:
<style type="text/css">
#div {/* no properties are defined here */}
</style>
<div id="div">div</div>
//returns "medium" instead of 0px
document.getElementById('div').currentStyle.borderLeftWidth
//returns "auto" instead of 0px
document.getElementById('div').currentStyle.marginLeft
//returns "undefined" instead of 1
document.getElementById('div').currentStyle.opacity
Hat jemand eine cross-browser-Lösung für alle Eigenschaften ohne die Verwendung von jQuery oder anderen Javascript-Bibliotheken?
Kommentar zu dem Problem
Der IE
currentStyle
- Objekt, zeigt Sie die browser-default-Werte für diese Eigenschaften. Vielleicht könnte man eine CSS-reset zu normalisieren, die standardmäßig in allen Browsern. @Spitz ich bin auf der Suche nach einer Javascript-Lösung, da ich das Schreibe, eine kleine Bibliothek, die ich nicht wollen, es zu verändern, Benutzer-styles.
link die Ihnen helfen könnten.
@Mr_Green danke, aber es hilft nicht. I ' V gesehen, dass die Seite vor. Der code kann nicht analysiert werden Werte wie
medium
und auto
zu px
. InformationsquelleAutor der Frage user1643156 | 2013-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht jquery verwenden möchten, aber es gibt nichts verhindern, dass Sie spähen in den code und sehen, wie Sie damit umgegangen 🙂
Innen jquery-code gibt es einen Verweis über dieser Kommentar das scheint der Punkt (Lesen Sie dazu auch den gesamten Artikel).
Hier der jquery-code, der sollte mit Ihrem problem befassen:
InformationsquelleAutor der Antwort
statt :
sollte es sein :
sonst hätte es nie funktioniert.
InformationsquelleAutor der Antwort Eugen Mihailescu
Funktioniert dies nicht für alle Stile, aber funktioniert für die Abmessungen (das ist das, was ich brauchte).
Anstatt zu versuchen zu erraten, welche Stile angewendet werden, verwenden Sie einfach die position in Pixel von jeder der vier Seiten der box-like element zur Berechnung der Abmessungen. Dies funktioniert auch, wieder auf den IE 5 und FF 3.
Siehe auch: getBoundingClientRect ist genial
Wenn dies immer noch nicht funktioniert für Sie, überprüfen Sie heraus diese Geige ich habe für die Berechnung die innere Breite der Schachtel. Es verwendet die folgenden als shim für getComputedStyle:
InformationsquelleAutor der Antwort Kyle Falconer
Das war zu groß für ein edit, also es war eine Antwort, aber es funktioniert nicht bieten eine vollständige Antwort auf die Frage zur hand.
Gabriels Antwort schlägt mit einer Eigenschaft wie
"backgroundColor"
oder"background-color"
je nach browser-version, weil.getPropertyValue
erwartet, dass die CSS-Eigenschaft name und dieel.currentStyle[prop]
muss die camel-case-version.Hier ist eine korrigierte version, die immer erwartet, dass die camel-case-version:
InformationsquelleAutor der Antwort Emile Bergeron