Javascript 如何捕捉css样式上的onload事件?

Javascript 如何捕捉css样式上的onload事件?,javascript,Javascript,我加载css var ss = document.createElement("link"); var url = 'http://site.ru/style.css'; ss.setAttribute("rel", "stylesheet"); ss.setAttribute("type", "text/css"); ss.setAttribute("href", url); document.getElementsByTagName("head")[0].appendChild(ss);

我加载css

var ss = document.createElement("link");
var url = 'http://site.ru/style.css';
ss.setAttribute("rel", "stylesheet");
ss.setAttribute("type", "text/css");
ss.setAttribute("href", url);
document.getElementsByTagName("head")[0].appendChild(ss);

我想在css加载后调用函数,但标记链接并没有onload事件,有什么方法可以做到吗

您目前没有通过Ajax加载css内容,但您可以这样做。这样,当数据传输完成时,您也可以进行回调。在本例中,我使用jQuery使事情变得简短和方便

请注意:只有当您的javascript和css文件位于同一个域上时,这才有效

$.get('http://site.ru/style.css', function( css ) {
    $('<style>', {
        html: css
    }).appendTo( document.head || document.getElementsByTagName( 'head' )[0] );
});

您的javascript是否在同一个域上运行?是的。问题是我不能做像ss.onload=myfunc()这样的事情;回答得不错,但我建议在这里使用jQuery或Prototype之类的框架。jQuery提供了一个简单的“就绪”事件,可以附加到css文件。而且整个AJAX处理过程更加简单。@acme:你是什么意思?当DOM准备就绪时,
.ready()
内部侦听是否可用的
DOMContentLoaded
事件将触发。样式表和图像可能现在还没有加载,而且我猜OP希望在pageload之外动态插入一个样式表……我真的很感兴趣为什么有人会匿名否决这个答案。哦,天哪;)您知道如何做到这一点,但要保留用于从样式表加载图像等的相对文件位置吗?
var req;

try {
    req = new XMLHttpRequest();
} catch ( e ) {
    req = new ActiveXObject( 'Microsoft.XMLHTTP' ); // there are plenty more
} finally {
    req.onreadystatechange = function() {
        if( req.readyState === 4 ) {  // simplified/shortened
            var head          = document.head || document.getElementsByTagName('head')[0] || document.documentElement,
                lnk           = document.createElement('style');
                lnk.type      = 'text/css';
                lnk.textContent = lnk.text = req.responseText;

            head.insertBefore(lnk, head.firstChild);
        }
    };

    req.open('GET', 'http://site.ru/style.css', true);
    req.send(null);
}