Ich habe eine Funktion mit javascript
:
appendChild
div am Körper. document.defaultView.getComputedStyle(divElement, null)[cssRule]
. Jetzt gibt getComputedStyle
die Standardwerte zurück, und wenn ich auf Haltepunkt mit Firebug vor getComputedStyle
aufrufe warte, gibt es die CSS-Regel aus dem injizierten CSS zurück.
Grüße, Munim
Genau das habe ich getan.
Um sicherzustellen, dass eine bestimmte CSS-Datei geladen wird, habe ich am Ende der CSS-Datei einen Stil hinzugefügt. Zum Beispiel:
%Vor%Jetzt habe ich eine JavaScript-Funktion, die den Callback auslöst, der angegeben wird, wenn der obige Style auf der Seite geladen wird:
%Vor%Und so habe ich die obige Funktion benutzt:
%Vor% Hier nimmt der 1. Parameter die options
, wo id
auf die Testart und die CSS-Eigenschaft überprüft wird, um zu überprüfen, was vom CSS geladen wurde.
Ich nehme an, dass Sie dies tun, weil Sie die URL des Stylesheets dynamisch erstellen müssen.
Paaroptionen kommen mir in den Sinn:
1) Erstellen Sie die URL serverseitig und vermeiden Sie dieses Problem vollständig.
2) Überprüfen Sie mit einem setTimeout, ob der Style geladen wurde und prüfen Sie alle 20 ms, bis getComputedStyle den gewünschten Wert zurückgibt.
Ich mag # 2 überhaupt nicht ... aber es ist eine Option. Wenn Sie # 2 verwenden, müssen Sie das Zeitlimit löschen, auch wenn eine Ausnahme vorliegt.
Hier ist eine Lösung, die in allen Browsern funktioniert.
%Vor%Im Grunde genommen
Die Verwendung von document.styleSheets zur Überprüfung, ob ein css geladen ist, ist falsch, da sobald ein CSS-Link zum DOM hinzugefügt wird, er in document.styleSheets verfügbar ist, auch wenn er noch nicht geladen ist. p>
Hinzufügen einer Markierung zu CSS ist auch hacky.
Die richtige Lösung ist das Onload-Ereignis zu hören:
%Vor%Tags und Links javascript css