1. 程式人生 > >CSS 樣式非同步載入

CSS 樣式非同步載入

1.方法1,使用link標籤的media屬性(注:測試只有高版本的Google瀏覽器可以,FF,IE都失敗)

觸發非同步樣式下載的訣竅是使用一個 <link> 元素,並 為media 屬性設定一個不可用的值 (我用的是 media=”none”, 不過其它的任何值也是可以的)。當一個媒體查詢的結果值計算出來是 false 的時候,瀏覽器仍然會下載樣式表,但是不會在渲染頁面之前等待樣式表的資源可用。

<link rel="stylesheet" href="css.css" media="none">
樣式表一下載好,media 屬性就必須被設定一個可用的值,以便樣式規則能被應用到 html 文件中onload 事件就可以用來將 media 屬性切換到all:
<link rel="stylesheet" href="css.css" media="none" onload="if(media!='all')media='all'">

使用例項:
<link href="~/Content/font1.css" rel="stylesheet" media="none" id="fontLink" />
$('#fontLink').load(function () {
    $(this).attr('media', 'all');

    //地址,資料解析
    handleUrlData();
});

2.方法2.延遲新增link標籤到頁面,這種方式比較相容

可以使用同樣原理,延遲載入JS

$(window).load(function () {
    //非同步延遲載入樣式
    var link = $('<link />');
    link.attr('href', '/Content/font1.css');
    link.attr('rel', 'stylesheet');
    link.appendTo($('head'));
    link.load(function () {
        console.info('載入成功...');
    });
});