为什么google.com在blackberry&phonegap与黑莓和浏览器上看起来有所不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么google.com在blackberry&phonegap与黑莓和浏览器上看起来有所不同相关的知识,希望对你有一定的参考价值。
我正准备在黑莓风暴(9530模拟器)上运行手机。我一直在使用BB的内置浏览器测试我的webapp,它看起来还不错,但是当我试图从phonegap中查看一些代码时,它已经完全有点了,即使我将phonegap指向同一个url(我没有尚未达到在设备上本地运行代码的程度。
我在谷歌上尝试了一个测试用例并得到了类似的结果。见下文。我怀疑我在这里缺少一些基本的东西。我希望两张图像几乎相同。
浏览器http://www.eleganttechnologies.com/outside/ImgDeviceBB9530WebGoogle.jpg
Phonegap http://www.eleganttechnologies.com/outside/ImgDeviceBB9530PgGoogle.jpg
[更新]为了揭示正在发生的事情,我运行浏览器和嵌入式浏览器(phonegap)对抗W3移动网络酸测试:http://www.w3.org/2008/06/mobile-test/我肯定注意到两者之间的差异,但我还不知道'为什么'和'如何解决'。
酸通过内置浏览器 (来源:eleganttechnologies.com) 顺便说一句 - 我今天早些时候跑了这个,并且比现在还多了几个绿色广场。
酸通过浏览器嵌入phonegap http://www.eleganttechnologies.com/outside/ImgDeviceBb9530PgAcid.jpg
免责声明:我对phonegap一无所知,但有一个很好的理论。默认情况下,BlackBerry上的嵌入式浏览器控件使用旧版本的渲染引擎,而不是BlackBerry浏览器本身。
在去年的黑莓开发者大会上,有人就此进行了一次演讲,并且有一个未记录的选项来使用更新的渲染引擎。
选项ID是17000(是的,一个幻数,可以改变,使用风险等),应该设置为true。不确定你是如何通过phonegap传递此选项的(我不熟悉该工具包)但是使用BlackBerry API它是这样的:
BrowserContent content;
...
content.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, 17000, true);
我不知道您使用的浏览器的具体细节,但我知道大多数大型网站都会检测您的OS +浏览器组合,以决定向您展示哪些html。
如果Google看到不同的用户代理,您可能会获得HTML的通用移动版本,而不是内置浏览器获得的Blackberry特定HTML。
如果您可以访问Web服务器,请尝试使用两种浏览器设置进行访问,并查看日志文件中是否存在任何差异。这可能会告诉你一些有趣的事情
正如我们在酸性测试中看到的......
一个浏览器(内置的)正确报告为BlackBerry9530,另一个(phonegap)没有呈现用户代理[“Testing with。”]。在这种情况下,Google会为您提供其主页的默认视图,而当您将自己报告为BlackBerry设备时,您将获得BlackBerry特定的渲染。
通过声音,使用phonegap删除默认的用户代理(很可能是因为它无法识别您的设备)。由于phonegap是开源的,最好的办法是进入,并调试它并找出当http请求离开设备并从那里追回时用户代理会发生什么。
也许一个浏览器具有另一个浏览器没有的功能?
嗯。通过查看屏幕截图,我会说第二页可能缺少一些资源。它可能缺少一些图像,脚本和CSS文件,这可以解释不同的l&f。知道Blackberry Browser Field API如何工作,我猜想使用BrowserField的实现没有正确完成。只是我的猜测。除此之外,当浏览器字段初始化时,调用者需要通过启用适当的浏览器功能(脚本,样式等)来正确配置它。再次,API以非常奇怪的方式完成,我已经陷入了这个陷阱。设置选项时,您不能只创建一个掩码(如CSS | WML | SCRIPT)并进行一次调用。选项是数字的,我相信,不重叠 - 但您仍然需要调用API来独立设置每个选项。
此外,为BrowserField异步加载资源的方式需要时间来理解。
只需我0.02美元。
以上是关于为什么google.com在blackberry&phonegap与黑莓和浏览器上看起来有所不同的主要内容,如果未能解决你的问题,请参考以下文章
iPhone/Android/BlackBerry 上的 jQuery
使用 JSR-226 (Blackberry) 渲染存储在内存中的 SVG