【发布时间】:2015-02-15 14:46:29
【问题描述】:
我正在向我的 js 应用程序添加主题设置。应用程序也应该离线工作,所以我必须检查远程样式文件(如http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/jquery/jquery-ui.css)是否存在并且可以访问,否则我将<link rel="stylesheet"> 中的href 设置为指向本地文件。
到目前为止,我使用以下代码,但使用 jQuery 2.1.3 它在控制台上输出警告:
主线程上的同步 XMLHttpRequest 已被弃用,因为它会对最终用户的体验产生不利影响。如需更多帮助,请查看http://xhr.spec.whatwg.org/。
在jquery-2.1.3.js:8556 行引发,我可以忽略警告...
url = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/jquery/jquery-ui.css";
$.ajax({url: url,
type: "HEAD",
timeout: 1000,
async: false,
error: function() {url = 'css/jquery-ui.css';}
});
/* modify link statement to use url for href */
在寻找替代方法时,我尝试检查链接语句是否在更改其 href 后加载了新的 css,例如:
$('#id_of_the_link_stmt').error(function() {
console.log("New url not loaded, reverting to local file")
}).attr('href', url);
但它不起作用。
感谢您的建议!
【问题讨论】:
-
并且简单地使 AJAX 请求异步不是一种选择?
-
你用的是哪个浏览器,还是所有浏览器都有这个问题?
-
为什么不检查本地文件是否存在,如果不存在则从服务器加载文件,如果无法获取文件,则表示本地文件不存在,浏览器也不存在已连接到互联网。
-
或者只是检查浏览器是否可以访问互联网,如果有,则从服务器获取文件,否则搜索本地。
标签: jquery