Ich habe die folgende Einrichtung. Ich erstelle eine <div>
, füge den Begriff "vor" durch den Pseudo-Selektor :before
an und lese diesen Wert mit getComputedStyle
.Ich kann lesen: vor {content: '...'} string über JavaScript (getComputedStyle), aber diese Zeichenfolge verhält sich seltsam
Dies funktioniert, ich bekomme den Begriff (der in meinem Fall ist "vor") erfolgreich, es ist vom Typ "String". (Siehe die Konsolenausgabe.)
Der Vergleich dieser Zeichenfolge mit einer bestimmten Zeichenfolge gibt die erwarteten true
, aber nur in Safari, CodePen und hier, in dem „Run-Code-Snippet“ -Umgebung!
Es funktioniert nicht in Chrome, Firefox oder IE. Der Vergleich der Übereinstimmung gibt false
zurück.
Was könnten die Gründe dafür sein?
Warum funktioniert dieser einfache String-Vergleich nicht?
Die drei relevanten Code-Schnipsel wie folgt aussehen:
var content = window.getComputedStyle(document.querySelector('.pseudo'), '::before').getPropertyValue('content');
console.log('content: ' + content); // "before"
console.log('typeof content: ' + typeof content); // string
console.log(content == "before"); // false
document.write(content == "before"); // false
div.pseudo:before {
content: "before";
color: red;
}
<div class="pseudo">
Div with pseudo :before content.
</div>
Es gibt 'true' auf Codepen für mich in Chrome – Turnip
Schnelltest in einigen Browsern: IE gibt 'false' zurück , Google Chrome 'wahr', Firefox: 'falsch' – Jordumus
@ uʍopǝpısdn Sie haben Recht !! Meine Schuld, Entschuldigung. Ich habe die Frage entsprechend aktualisiert. –