我有一个在iphone应用程序中的UIWebView内运行的jquery-mobile应用程序。 webview正确显示jquery-mobile页面,但仅当页面未加载3G连接时才显示。我知道这听起来很奇怪,这是一个非常奇怪的问题的确,因为如果网页加载时使用WIFI连接,它是完美的显示...这里是截图...
如果不是我的客户使用3G连接加载jQuery Mobile的页面,似乎是出于某种原因所需要显示jQuery Mobile的页面的JavaScript和CSS不加载。这是第二个屏幕截图,显示了加载3G时页面的样子......
(注意:我知道这个截图与第一个截图不完全相同,但正确加载时它的样式与第一个截图相同)
你可以从页面的标题看,那是给这个问题的3G连接是荷兰和我的客户已经试图在荷兰的两个不同的3G供应商,并与供应商都遇到了同样的问题。如果我测试我居住的应用程序,即在南非,我的3G连接正确加载页面。
所以,我的问题是,有没有人知道什么可能导致jquery移动javascripts和CSS无法加载荷兰的3G连接?
答案 0 :(得分:10)
我已经确定荷兰的3G连接出了什么问题。出现这个问题是因为几个移动运营商在将其发送到手机之前进行了内容修改,这种修改打破了jQuery。根据我的经验以及我在互联网上看到的内容,以下提供商似乎进行了内容修改:英国的O2,荷兰的沃达丰和荷兰的T-Mobile。
要查看其他人遇到有关这些3G连接问题的报道,请查看以下链接:
http://stuartroebuck.blogspot.com/2010/07/mobile-proxy-cache-content-modification.html
http://bugs.jquery.com/ticket/8917
http://www.ladysign-apps.com/blog/code/javascript/jquery-does-not-load-3g-iphone-safari/
上面列出的最后一个链接也解决了这个问题;必须将正在被3G连接修改和破坏的javascript文件移动到外部服务器。所以,例如,如果jQuery被3G连接破坏(就像我的情况那样),那么不要自己提供jquery文件,而是使用像谷歌这样的CDN: http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
希望这些信息可以为其他人节省这个问题让我感到沮丧的时间!
答案 1 :(得分:0)
对于在O2上遇到此问题的人(当然在英国肯定会这样),原因是因为O2有一个“优化平台”,它采用外部CSS和Javascript文件并将它们内联在文档上,这可能会导致冲突。 (source)
这个网址肯定是我偶然发现的关于这个特定问题的更好的链接之一:
http://stuartroebuck.blogspot.co.uk/2010/08/official-way-to-bypassing-data.html
更可靠的解决方法之一是修改网站的标题以返回Cache-Control: no-transform
标题,因为O2已经表明如果提供此响应,则他们不会修改标题。
您可以将以下内容添加到.htaccess文件中:
<files ~ "\.(html|php|js)$">
Header add Cache-Control "no-transform"
</files>
答案 2 :(得分:-2)
我通过更改ajax中的url来解决此问题,从../folder/subfolder/test.php改为http://mydomain/folder/subfolder/test.php