我有一个脚本,可以检测按钮点击事件并使用jQuery将CSS样式表附加到"head"中,如下所示:
const link = "<link class='listcss' rel='stylesheet' href='http://....list.css'>";
$("head").append(link);
然后我需要根据CSS的宽度和高度属性进行一些计算:
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();
然而,如果我在添加样式表后立即启动CSSDone(); ,那么计算会在css加载之前发生。
我像疯狂搜索一样搜索了整个网络,但是我尝试的所有方法都不起作用:
我尝试了以下选项:
无效:
link.onload = function () { CSSDone(); }
无效:
if (link.addEventListener) { link.addEventListener('load', function() { CSSDone(); }, false); }
不起作用:
link.onreadystatechange = function() { var state = link.readyState; if (state === 'loaded' || state === 'complete') { link.onreadystatechange = null; CSSDone(); } };
无法正常工作:
不能正常工作:
$(window).load(function () {
CSSDone();
});
$(window).bind("load", function() {
CSSDone();
});
相信我,没有什么方法可以解决......
**一个解决方法:**
我在DOM中加载CSS,然后立即使用jQuery将其删除。这样以后将链接添加到头部时就足够快了。