getComputedStyle wie javascript-Funktion für den IE8
Ich bin versucht, zu schreiben eine Javascript-Funktion in ein Java-GWT-code ruft den Wert der folgenden Stile
"direction", "fontFamily", "fontSize", "fontSizeAdjust", "fontStyle", "fontWeight", "letterSpacing", "lineHeight", "padding", "textAlign", "textDecoration", "textTransform", "wordSpacing"
Den getComputedStyle
war nützlich in allen Browsern außer dem IE8 das nicht unterstützen diese Funktion, so wie ich das verstehe
Schaute ich mir die Beiträge über smiler Thema hier aber alle von Ihnen konnte nicht eine der oben genannten Stile
smiler Thema Beiträge Eins, Zwei.
Hier ist meine erste Lösung ohne den IE8 speziellen Fall
public static native String getStyleProperty(Element element, String style) /*-{
if (element.currentStyle) {
return element.currentStyle[style];
} else if (window.getComputedStyle) {
return window.getComputedStyle(element, null).getPropertyValue(
style);
}
}-*/;
Irgendwelche Vorschläge für eine gute getComputedStyle
Ersatz-Funktion für den IE8 ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schauen Sie hier: http://snipplr.com/view/13523/
Code:
Beispiel:
this
der Rückgabewert sollte ein neu erstelltes Objekt. Jetzt weist esel
undgetPropertyValue
Eigenschaften für das window-Objekt, und nachfolgende Aufrufe vonwindow.getComputedStyle
diese überschrieben. (Auch eine geringfügige nitpick: sowohl die{1}
im regulären Ausdruck und die if-Anweisung testen, ob der reguläre Ausdruck findet, sind unnötig)pseudo
, aber nicht tun nichts mit ihm. Wie bekomme ich die berechneten Stil von pseudo-Elemente?Hier ist die Lösung. Es basiert auf dieser Trick, aber dann habe ich erweitert, es im Fall zu beheben zwei Probleme.
Erste problem ist, dass
borderTopWidth
(left
,bottom
,right
) inel.currentStyle
kehrt als Adjektiv -'thin'
,'medium'
,'thick'
- oder'none'
. Der Trick zurück Ausnahme.Und das zweite problem, dass einige Werte nicht korrekt berechnet werden. Wie
opacity
und einige andere. Sie können überprüfen Sie es selbst durch die Anwendung dieser Trick-Methode, um alle Eigenschaften:Endlich, hier ist meine Lösung, basierend auf der Annahme, dass ich weiß, dass alle Eigenschaften, die ich möchte zu bekommen, die von dieser Funktion:
Hier ist vollständiger polyfill für IE8/getComputedStyle, die alle Fälle behandeln soll:
https://github.com/jonathantneal/Polyfills-for-IE8/blob/master/getComputedStyle.js
Ich verwendete eine ähnliche Methode, um meine ursprüngliche Lösung mit einem zusätzlichen Fall zu behandeln, inline-styles, auch die Möglichkeit zu prüfen, ob das aktuelle Dokument die Unterstützung der
getComputedStyle
ist ein bisschen anders, prüft es in derdocument.defaultView
anstelle der Fenster selbst, hier ist die volle FunktionQuelle
Die beste Lösung, die ich bisher gefunden habe, war von einer anderen Antwort hier: https://stackoverflow.com/a/17890142/3672465. Es ist eine standalone-version des jQuery-curCSS() code, die Sie benötigen, um diese zu justieren, um Ihre Bedürfnisse anzupassen (wie Maksim Notizen in seiner Antwort). Hier ist eine kompakte version des IE 8 Teil, wenn Sie nur wollen, etwas zu fallen.