Ich habe ein Skript, das einen Klick auf eine Schaltfläche erkennt, auf die es mit jQuery ein CSS-Stylesheet an den “Kopf” anfügt:
const link = "<link class="listcss" rel="stylesheet" href="http://....list.css">";
$("head").append(link);
Dann muss ich einige Berechnungen basierend auf den CSS-Eigenschaften Breite und Höhe durchführen:
function CSSDone(){
if($(window).width()>640){
$(".grid-item").css({"height":$(".grid-item").width()*0.2});
$(".grid_item_img").css({"height":$(".grid-item").width()*0.2});
console.log("a");
}else{
$(".grid-item").css({"height":$(".grid-item").width()*0.33});
$(".grid_item_img").css({"height":$(".grid-item").width()*0.33});
console.log("b");
}
}
CSSDone();
Wenn ich jedoch CSSDone(); Unmittelbar nach dem Hinzufügen des Stylesheets finden die Berechnungen statt, bevor das CSS geladen wird. Ich habe wie verrückt im Internet gesucht, aber alles, was ich versucht habe, funktioniert nicht:
Ich habe diese Optionen ausprobiert:
-
Funktioniert nicht:
link.onload = Funktion () { CSSDone (); }
-
Funktioniert nicht:
if (link.addEventListener) { link.addEventListener('load', function() { CSSDone(); }, false); }
-
Funktioniert nicht:
link.onreadystatechange = function() { var state = link.readyState; if (state === 'loaded' || state === 'complete') { link.onreadystatechange = null; CSSDone(); } };
-
Funktioniert nicht:
$(window).load(function () { CSSDone(); });
-
Funktioniert nicht:
$(window).bind("load", function() { CSSDone(); });
Glaub mir. Nichts funktioniert……
**Eine Problemumgehung:**
Ich lade das CSS in das DOM und entferne es sofort wieder mit jQuery. Auf diese Weise ist es schnell genug, wenn Sie den Link später zum Kopf hinzufügen.
Mögliches Duplikat von CSS-Link ändern und warten, bis neues CSS geladen ist. Als Dupe für das Schließen zu stimmen, nicht weil dies eine schlechte Frage ist, sondern im Interesse der Konsolidierung von Informationen.
– James McMahon
30. August 2019 um 20:18 Uhr
Ich würde lieber dafür stimmen, die andere Frage statt dieser zu schließen.
– Mesqueeb
30. August 2019 um 22:23 Uhr