Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 外部css,$.ajax,firefox,jquery。_Javascript_Jquery_Cross Browser - Fatal编程技术网

Javascript 外部css,$.ajax,firefox,jquery。

Javascript 外部css,$.ajax,firefox,jquery。,javascript,jquery,cross-browser,Javascript,Jquery,Cross Browser,在我的html中,我有两个外部css文件 externalCSSContents = []; function getExternalCSSContents(){ var i, href; for (i=0; i < document.styleSheets.length; i++) { href = document.styleSheets[i].href; if (href != null) {

在我的html中,我有两个外部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);
externalCSSContents=[];
函数getExternalCSSContents(){
变量i,href;
对于(i=0;i
这段代码有时会在firefox中警告1,但在其他浏览器中会永久警告2。出了什么问题?我该如何解决它?
[编辑]href有时在ff中=null

[Edit2]我明白了,很抱歉我没有提到prefixfree.min.js附件。有了这个库文档.styleSheets[i].href就可以在FireFox中工作,就像在没有它的Chrome中一样。(Сchrome不支持document.styleSheets)。谢谢大家的回答,再次对我的疏忽表示歉意。

尝试将警报移到成功功能中,您可能有比赛条件。您希望警报等待AJAX调用完成。

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);
}
externalCSSContents=[];
函数getExternalCSSContents(回调){
变量i,href;
对于(i=0;i
您的代码正在泄漏全局消息!您可以通过放置
var i,href在函数的开头。@ThiefMaster:我想你的意思是
var I,href;)你查过密码了吗?为什么警报1?它是两次循环,但只在数组中放入一个对象,还是只循环一次?document.styleSheets.length等始终返回什么@James Montagne document.styleSheets.length=2,但href=null,除了调用块的
async:false
之外。