external css, $.ajax, firefox, jquery .

external css, $.ajax, firefox, jquery .

本文关键字:firefox jquery ajax css external      更新时间:2023-09-26

在我的html中,我有2个外部css文件

externalCSSContents = [];
function getExternalCSSContents(){
    var i, href;
    for (i=0; i < document.styleSheets.length; i++)
    {
        href = document.styleSheets[i].href;
            if (href != null)
            {  
                $.ajax({
                    async: false,
                    url: href, 
                    success: function (data) { 
                        externalCSSContents.push(data);
                    }
                });
            }
    }
}
getExternalCSSContents();
alert(externalCSSContents.length);

这段代码有时会在 Firefox 中提醒 1,但在其他浏览器中会永久提醒 2。出了什么问题,我该如何解决?
[编辑] href 有时 = 在 ff
中为空[编辑2]我明白了,对不起,我没有提到前缀free.min.js附上。有了这个库文档.styleSheets[i].href,在FireFox中工作,就像在Chrome中没有它一样。( 文档样式表不受 Сhrome 支持)。谢谢大家的回答,再次对不起我的疏忽。

AJAX的另一个受害者。AJAX 代表异步 JavaScript 和 XML。第一部分在这里到位(异步)。

可能是 AJAX 调用在到达警报之前未完成。可以使用在 AJAX 函数完成时调用的回调。

externalCSSContents = [];
function getExternalCSSContents(callback){
    var i, href;
    for (i=0; i < document.styleSheets.length; i++)
    {
        href = document.styleSheets[i].href;
            if (href != null)
            {  
                $.ajax({
                    url: href, 
                    success: function (data) { 
                        externalCSSContents.push(data);
                        callback();
                    }
                });
            }
    }
}
getExternalCSSContents(downloadReady);
function downloadReady() {
    alert(externalCSSContents.length);
}

尝试将警报移动到成功函数中,你可能遇到争用条件。您希望警报等到 AJAX 调用完成。