$.when($.getStylesheet('css/main.css'), $.getScript('js/main.js'))
.then(function () {
console.log('the css and js loaded successfully and are both ready');
}, function () {
console.log('an error occurred somewhere');
});
var date = new Date().getTime();
document.head.innerHTML += '<link rel="stylesheet" type="text/css" href="/templates/primary/style/edit_styles.css?='+date+'">';
5条答案
按热度按时间clj7thdc1#
CSS不是一个脚本,所以你不必“执行”它的意义上的脚本执行。
基本上,一个动态创建并附加到头部的
<link>
标记就足够了,如字符串
或者是
型
如果你不想使用jQuery的话。
浏览器将响应DOM中的更改并相应地更新页面布局。
编辑:
我读到过旧的Internet Explorer在这方面有问题,你可能需要像回答这样做才能让它工作:
https://stackoverflow.com/a/2685639/618206
EDIT2:
阅读文件内容并将其内联(在
<style>
标记之间)也是一个有效的解决方案,但这样CSS将不会被浏览器缓存。deikduxw2#
我创建了一个
$.getScript
的替代方案来处理样式表。我把它叫做$.getStylesheet,原因很明显。它实现了
$.Deferred
对象,这意味着你可以像这样链接:字符串
下面是$.getStylesheet的小函数。它只是托管在Github Gist上,所以如果需要,我可以更新它。
u59ebvdq3#
你可以使用相同的方法$.getScript来“下载”样式表,因为$.getScript实际上只是另一个HTTP请求。但是由于CSS是不可执行的,所以它将有点连线。
f8rj6qna4#
这里有一个函数,它将加载CSS文件,并返回成功或失败的回调。我认为这种方法比公认的答案更好,因为使用HREF将元素插入DOM会导致额外的浏览器请求(尽管请求可能来自缓存,这取决于响应头)。
字符串
用法如下:
型
下面是另一个函数,它将同时加载CSS和JavaScript文件:
型
h79rfbju5#
如果不想缓存
字符串