由于其他一些约束,我必须通过jQuery加载我的CSS:
$('head').append($('<link rel="stylesheet" type="text/css" />')
.attr('href', 'http://path/MyCSS.css'));
问题是,通常的jQuery页面加载函数
$(function () {
myFunc();
});
未按预期工作。 myFunc
应该做与加载的CSS相关的事情。现在因为我无法确定何时下载CSS并将其添加到我的HTML中,我不知道如何以及何时调用myFunc?
答案 0 :(得分:2)
通过ajax调用,您可以确保已加载整个css。
$( document ).ready(function() {
$.ajax({
url: 'your_css_link',
dataType: 'text',
success: function(css) {
$('<style type="text/css">\n' + css + '</style>').appendTo("head");
myFunc();
}
});
});
答案 1 :(得分:1)
链接样式表标记上的加载事件有很多问题,但您可以使用image.onerror loading hack
var head = document.getElementsByTagName( "head" )[0],
body = document.body,
css = document.createElement( "link" ),
img = document.createElement( "img" ),
cssUrl = "/path/to/a/css/file.css";
css.href = cssUrl;
css.rel = "stylesheet";
head.appendChild( css );
img.onerror = function() {
// Code to execute when the stylesheet is loaded
body.removeChild( img );
}
body.appendChild( img );
img.src = cssUrl;
然后在img.onerror
方法中:
img.onerror = function() {
body.removeChild(img);
jQuery(function($) {
// stylesheet is loaded and the DOMContentLoaded event is also fired
});
}
答案 2 :(得分:0)
您应该可以通过修改上面的内容,但只需一次调用即可完成。
$('head').append('<link rel="stylesheet" type="text/css" href="/path/to/stylesheet.css">');
这不适用于小于8的IE,因此您需要:
答案 3 :(得分:0)
你尝试使用load而不是ready,有时候工作n_n
link元素有加载和错误事件,因此您可以使用它们来确定是否加载了css