我有一个脚本,该脚本可检测到单击按钮的情况,该脚本将使用jQuery将CSS样式表附加到“ head”,如下所示:
const link = "<link class='listcss' rel='stylesheet' href='http://....list.css'>";
$("head").append(link);
然后,我需要根据CSS的width和height属性进行一些计算:
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();
});
相信我。什么都行不通......
我将CSS加载到DOM中,然后立即用jQuery将其立即删除。这样,以后将链接添加到头部时,它足够快。
您需要link
在头中插入一个节点,然后将onload
事件附加到该节点。在您的代码链接中是一个字符串。请参阅下面的示例代码,了解如何实现所需的内容。
var link = document.createElement('link');
link.setAttribute("rel", "stylesheet");
link.setAttribute("type", "text/css");
link.onload = CSSDone;
link.setAttribute("href", 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');
document.getElementsByTagName("head")[0].appendChild(link);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句