Javascript 外部css,$.ajax,firefox,jquery。
在我的html中,我有两个外部css文件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) {
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
之外。