Signatur
Beschreibung
Die Methode getStringValue() gehört zum veralteten Interface CSSPrimitiveValue aus der Spezifikation DOM Level 2 Style. Sie liest den Inhalt eines einfachen CSS-Werts als Zeichenkette aus. Das funktioniert nur bei Werten, deren primitiveType einer dieser Konstanten entspricht:
CSS_STRING(19), z. B. der Inhalt voncontent: "Hallo"CSS_URI(20), z. B. die URL ausurl(bild.png)CSS_IDENT(21), z. B. Schlüsselwörter wieblockoderautoCSS_ATTR(22), der Attributname ausattr(title)
An ein CSSPrimitiveValue-Objekt kam man früher über CSSStyleDeclaration.getPropertyCSSValue(), meist in Verbindung mit window.getComputedStyle(). Anders als die reine Textausgabe von cssText liefert getStringValue() den Wert ohne CSS-Syntax. Bei einer URL fehlen also url( und die Anführungszeichen.
Neuen Code sollte man nicht mehr damit schreiben. Nimm stattdessen getPropertyValue() (liefert einen String) oder die CSS Typed OM mit element.computedStyleMap() und CSSKeywordValue, CSSUnparsedValue und ähnlichen Klassen.
Rückgabewert
"bild.png" bei url(bild.png). Wenn der Wert kein String-Typ ist (z. B. CSS_PX), wird eine DOMException vom Typ InvalidAccessError ausgelöst.Beispiele
Klassische Nutzung mit Funktionsprüfung
const el = document.body;
const style = getComputedStyle(el);
if (typeof style.getPropertyCSSValue === 'function') {
const value = style.getPropertyCSSValue('display');
// CSS_IDENT = 21
if (value.primitiveType === 21) {
console.log('display:', value.getStringValue());
}
} else {
console.log('Veraltete API nicht verfügbar – Rückfall:', style.getPropertyValue('display'));
}
Hintergrundbild-URL auslesen: alt und modern
const box = document.createElement('div');
box.style.backgroundImage = 'url("https://example.com/bild.png")';
document.body.append(box);
const getBackgroundUrl = (el) => {
const cs = getComputedStyle(el);
// Alter Weg über CSSPrimitiveValue.getStringValue()
if (typeof cs.getPropertyCSSValue === 'function') {
return cs.getPropertyCSSValue('background-image').getStringValue();
}
// Moderner Weg: String auswerten
const match = cs.getPropertyValue('background-image').match(/url\(["']?(.*?)["']?\)/);
return match ? match[1] : null;
};
console.log(getBackgroundUrl(box));
Fehler bei Werten, die keine Strings sind, abfangen
const safeGetString = (primitiveValue) => {
try {
return primitiveValue.getStringValue();
} catch (err) {
// InvalidAccessError, z. B. bei CSS_PX
console.warn('Kein String-Wert:', err.name);
return null;
}
};
// Moderne Alternative mit der CSS Typed OM
const el = document.body;
if (el.computedStyleMap) {
const display = el.computedStyleMap().get('display');
console.log(display.constructor.name, display.value);
}
// Wichtig · Fallstricke
Veraltet und entfernt: CSSPrimitiveValue, CSSValue und getPropertyCSSValue() sind nicht mehr Teil der aktuellen CSSOM-Spezifikation. Chrome und Safari haben sie schon vor Jahren entfernt. Firefox hat sie zuletzt nur noch eingeschränkt unterstützt und dann ebenfalls entfernt. In aktuellen Browsern gibt es die Methode also praktisch nicht mehr. Prüfe deshalb immer vorher, ob sie verfügbar ist.
- Die Methode wirft
InvalidAccessError, wennprimitiveTypenichtCSS_STRING,CSS_URI,CSS_IDENToderCSS_ATTRist. Das heißt: Längen, Farben und Zahlen gehen hier nicht. getPropertyCSSValue()gibt für Kurzschreibweisen wiemarginoderbackgroundoftnullzurück.- Alternativen sind
CSSStyleDeclaration.getPropertyValue()und die CSS Typed OM (computedStyleMap(),attributeStyleMap). Die Typed OM ist in Chromium-Browsern und Safari verfügbar, in Firefox nur eingeschränkt.