
为什么是这样?
我已经尝试在Mac上的Safari和Mac上的iPad模拟器上模拟低带宽(使用dummynet)。这不会重现问题。
我目前怀疑这是我的移动 *** 作符在英国(O2)引入的一个问题,已知通过代理缓存修改某些内容,例如降级图像文件。如果您可以确认您在iPad或iPhone上通过3G通过另一个有用的移动 *** 作符连接时不会遇到此问题。
解决方法 我进一步调查了这一点,发现问题是英国移动 *** 作符O2(原来的苹果独家iPhone *** 作符)在发送到iPhone和iPad之前修改了网页内容。可能在发送到运行移动浏览器的任何设备之前。他们不确定地将一些CSS和JavaScript内联到网页的主要源文件中。这可能会由于其算法中的错误或者从原始文件中剥离白色空间而导致错误,而源文件中的语法错误则是其他方面的良性。
这些修改也会剥离受版权保护的JavaScript库和CSS库的版权信息,并对发送优化进行破坏。
例如,假设用户正在访问您网站上的所有链接到jquery库的页面序列。 O2不会让您的移动浏览器本地缓存库,而是在每个页面上列入库中,从而迫使您的手机一遍一遍地为每个页面加载整个库。
我在这里写了一篇关于这个问题的博客,希望如果再多注意一下:http://stuartroebuck.blogspot.com/2010/07/mobile-proxy-cache-content-modification.html
我的解决方法是使用document.write()在加载时插入JavaScript库依赖关系,并阻止O2对它们进行内联。这似乎工作得很好。例如。:
<script type="text/JavaScript">// <![cdaTA[// Using document.write to load JavaScript dependencIEs to bypass O2 network inlining of JavaScript.function loadJs(file){document.write("<" + "script type='text/JavaScript' src='" + file + "'></" + "script>")}loadJs("/Js/jquery-1.4.2.min.Js");loadJs("/Js/myJslibrary.Js");// ]]></script> 请注意,像以前一样,如果页面被用作xhtml,那么document.write将不起作用。
总结以上是内存溢出为你收集整理的网站在3G/iPad下的iPad/iPhone上显示JavaScript错误,但不在WiFi下全部内容,希望文章能够帮你解决网站在3G/iPad下的iPad/iPhone上显示JavaScript错误,但不在WiFi下所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)