Iphone 3g浏览器渲染问题。无线网络很好

时间:2011-06-01 16:46:02

标签: iphone css 3g

我正在建立一个网站,除了3G网络上的iPhone外,似乎在所有网络浏览器上都能正常运行。

由于某种原因,它没有正确显示,就像没有解析CSS一样。作为调查的一部分,我在wifi连接中尝试了相同的浏览器(iPhone Safari),页面呈现得很好。

页面是用经典的ASP编写的,有趣的是,如果我从PC浏览器复制渲染的源并给它扩展名为.htm,当你在3G上的iPhone上查看它时就会很好。相同的代码,这与传统的ASP和3G有什么不同,或者可能是移动公司的3G网络阻止特定内容?

我也在诺基亚3G Vodaphone网络上尝试过这种方式,这很好。

所以,我相信这证实iPhone浏览器没有故障,3G网络没有故障,代码没有故障,所以我似乎无法理解问题所在,除了它是一个问题与特定的3G提供商合作。

也许有人之前已经看过这个并且有一个建议/解释可以帮助解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

您的3g网络提供商可能会插入代理服务器以提供网页,例如用于缩小图像尺寸。它也可能会在页面中注入一些JavaScript。这些事情可能是你问题的根源。某些iPhone浏览器可让您查看网页的来源,例如iCab移动版,因此您可以从网络提供商处双重检查传送到浏览器的内容。

只是一个猜测......

答案 1 :(得分:0)

经过一番调查,似乎问题的解决方案是在使用外部CSS文件引用时不使用import,3g不喜欢某些服务提供商。

答案 2 :(得分:0)

我跑了一会儿,这是由O2完成的css和javascript压缩引起的,我发现解决方案是向这些文件添加HTTP Header“Cache-Control:no-transform”响应指令。

请参阅:http://stuartroebuck.blogspot.co.uk/2010/08/official-way-to-bypassing-data.html

另见Web site exhibits JavaScript error on iPad / iPhone under 3G but not under WiFi

对于需要在ASP.NET中使用此解决方案的任何人,这将使用URL重写模块2.0 http://learn.iis.net/page.aspx/665/url-rewrite-module-20-configuration-reference为javascript文件设置Cache-Control标头。

<system.webServer>
        <rewrite>
            <outboundRules>
                <rule name="Compression header" preCondition="Match JS Files">
                    <match serverVariable="RESPONSE_Cache-Control" pattern="(.*)" />
                    <action type="Rewrite" value="no-transform" />
                </rule>
                <preConditions>
                    <preCondition name="Match JS Files">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="(javascript)$" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>