2

我的网站是响应式的。博客部分使用指向 Tumblr的子域,但 Respond.js 的跨域版本不起作用。我正在这样做:

<script src="http://www.stevechab.com/scripts/respond.min.js"></script>
<link href="http://www.stevechab.com/scripts/respond-proxy.html" id="respond-proxy" rel="respond-proxy">
<link href="http://www.stevechab.com/scripts/respond.proxy.gif" id="respond-redirect" rel="respond-redirect">
<script src="http://www.stevechab.com/scripts/respond.proxy.js"></script>

我认为问题在于respond.proxy.gif 和respond.proxy.js 不在blog.stevechab.com 上……但这不会破坏拥有Respond.js 的跨域版本的目的吗?我的假设是正确的,还是我错过了什么?有解决办法吗?

注意:我试过http://www.tumblr.com/themes/upload_static_file ...没有骰子。

4

2 回答 2

6

@史蒂夫查布,

respond.jsrespond.proxy.js不适合你 有两个原因。

  1. 您在源域中有response-proxy.html文件,而该文件应该从您的子域 ( blog.stevechab.com ) 或任何其他外部域提供。

  2. 链接到具有相对 url 的 css 文件时, respond.js / respond.proxy.js似乎存在错误。要修复它,请使用绝对 url。您的主站点使用 css 样式表的相对 url,而您的博客使用绝对 url。

    • 注意:Bug 是由 respond.proxy.js ajax/xml 函数引起的


请在下面找到重新修订的工作标记,以使respond.jsrespond.proxy.js在您的网站上工作。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="http://www.stevechab.com/styles/styles.css">
<!--[if (lt IE 9) & (!IEMobile 7)]>
<link href="//blog.stevechab.com/scripts/respond-proxy.html" id="respond-proxy" rel="respond-proxy">
<link href="//www.stevechab.com/scripts/respond.proxy.gif" id="respond-redirect" rel="respond-redirect">
<![endif]-->
</head>
<body>
<!-- Your content goes here. -->

<!--[if (lt IE 9) & (!IEMobile 7)]>
<script src="//www.stevechab.com/scripts/respond.min.js"></script>
<script src="//www.stevechab.com/scripts/respond.proxy.js"></script>
<![endif]-->
</body>
</html>
于 2012-09-12T20:11:15.047 回答
3

引用respond.js自述文件:

Respond.js 通过 AJAX 请求 CSS 的原始副本来工作,因此如果您将样式表托管在 CDN(或子域)上,则需要上传代理页面以启用跨域通信。

——我的重点。跨域版本旨在使您能够处理从另一个域加载的样式表,而不是respond.js正在处理的域。但是,在 Tumblr 的情况下,您添加了第三个域:static.tumblr.com,您的代理脚本和 gif 已经登陆。那不能也不会奏效。

于 2012-05-25T15:54:01.880 回答