检测<link />资源的负载?

时间:2009-04-28 00:50:00

标签: javascript css optimization

浏览器为<script><img>标记提供加载事件。有没有办法检测对元素的请求是否已完成?

具体来说,我希望检测何时加载了<link>'样式表。

不幸的是,我认为使用哨兵样式并检测来自computedStyle的负载在我的情况下是不可行的。

1 个答案:

答案 0 :(得分:1)

可能有一种更简单的方法,但这对我有用。

确保您的<link>代码具有title属性:

<link title="myStyles" rel="stylesheet" href="style.css" />

然后使用这样的函数检查特定样式集中是否存在样式:

function linkLoaded(linkTitle, checkStyle)
{
    for (var ix=0; ix<document.styleSheets.length; ix++) {
        try {
            if (document.styleSheets[ix].title == linkTitle) {
                var mySheet=document.styleSheets[ix];
                var myRules = mySheet.cssRules? mySheet.cssRules: mySheet.rules
                for (var jx=0; jx<myRules.length; jx++) {
                    var thisSelector = myRules[jx].selectorText.toLowerCase();
                    if (thisSelector.substring(0, checkStyle.length) == checkStyle) {
                        alert("Found style!");
                        return;
                    }
                }
            }
        }
        catch (err) {}    
    }

    alert("Not loaded!");
    return;
}