javascript - Respond.js 跨域不工作
我在使 Respond 的 CDN/X-Domain 设置工作时遇到了困难。
我一开始是从 CDN 提供所有资源:
<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401">
<script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script>
<script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>
理论上这应该可行,因为所有资源都来自同一域。不过 IE8 并没有像应有的那样支持媒体查询。因此我调查了 Respond 的 CDN/跨域设置,并将我的 <head> 部分修改为如下内容:
<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401">
<script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script>
<script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>
<link href="http://cdn.example.com/respond-proxy.html?2013012401" id="respond-proxy" rel="respond-proxy">
<link href="http://cdn.example.com/img/respond.proxy.gif?2013012401" id="respond-redirect" rel="respond-redirect">
<script src="http://cdn.example.com/js/respond.proxy.js?2013012401"></script>
当那也失败时,我将我的 <head> 部分修改为这个:
<link rel="stylesheet" href="http://cdn.example.com/css/main.css?2013012401">
<script src="http://cdn.example.com/js/modernizr-2.6.2.min.js?2013012401"></script>
<script src="http://cdn.example.com/js/respond.min.js?2013012401"></script>
<link href="http://cdn.example.com/respond-proxy.html?2013012401" id="respond-proxy" rel="respond-proxy">
<link href="/img/respond.proxy.gif" id="respond-redirect" rel="respond-redirect">
<script src="/js/respond.proxy.js"></script>
我真的不确定还能尝试什么办法让它工作。在不使用 CDN 的本地开发环境中它运行得很好,但在生产环境中,这个 Respond.js CDN/X-Domain 设置不起作用。是否可能与添加到 CDN 资源的防缓存查询字符串有关?当所有资源都从同一个域提供时,为什么我最初的示例不起作用?
编辑:这是在 IE8 中抛出的错误
答案#1
此问题是由 respond-proxy.html 文件引用包含查询字符串(respond-proxy.html?2013012401)引起的。从该文件中删除查询字符串会使上述实现正常工作。