iPhone 3G浏览器渲染问题。WiFi正常。

3
我正在建设一个网站,除了使用3G网络的iPhone之外,所有Web浏览器似乎都可以正常运行。由于某种原因,它没有正确地显示,就好像CSS没有被解析一样。作为我的调查的一部分,我尝试了相同的浏览器(iPhone Safari)在WiFi连接中,并且页面渲染良好。
该页面是用经典ASP编写的,有趣的是,如果我从PC浏览器复制已呈现的源代码并给它一个.htm扩展名,当您在3G上的iPhone上查看它时,它会良好地呈现。同样的代码,所以这是否与经典ASP和3G或可能是移动公司3G网络阻止特定内容有关?
我还在Nokia 3G Vodaphone网络上尝试过这个问题,而且很好。
因此,我相信这证实了iPhone浏览器不是故障,3G网络不是故障,代码不是故障,因此我似乎无法理解问题所在,除非是特定3G提供商的问题。
也许有人以前见过这种情况,并且有建议/说明可以帮助解决此问题?
3个回答

1

你的3G网络提供商可能会插入代理来服务网页,例如缩小图像。它还可能向页面注入一些JavaScript。这些事情可能是你遇到问题的源头。一些iPhone浏览器可以让你查看网页的源代码,例如iCab移动版,因此你可以双重检查从你的网络提供商传递给浏览器的内容。

只是一个猜测...


感谢您提供的建议,以帮助找出返回的内容。看起来,在某些情况下,它似乎正在删除空格:<div id="tab_sub_container">在交付的源代码中为:<divid="tab_sub_container">如果它是随机执行此操作,那么我不会感到惊讶它表现奇怪。您以前见过这种情况吗?是否有解决方法? - user779816
@user779816 我之前没有见过这种情况。可能代理服务器试图摆脱不必要的空格,但在你的情况下出了问题。使用w3c CSS和HTML验证器检查整个HTML的有效性 - 可能会有一个故障导致代理服务器出错,而浏览器通常更宽容。 - marcus

0
经过一些调查,似乎解决问题的方法是在使用外部CSS文件引用时不要使用import,因为某些服务提供商不支持3G。

0

我之前遇到过这个问题,是由于O2进行的CSS和JavaScript压缩引起的。我发现解决方法是在这些文件中添加一个HTTP头“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 Rewrite Module 2.0设置Cache-Control标头以便于JavaScript文件。http://learn.iis.net/page.aspx/665/url-rewrite-module-20-configuration-reference

<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接