为什么google.com在黑莓和黑莓上看起来与众不同? phonegap vs. blackberry&浏览器

时间:2009-05-08 03:09:39

标签: browser blackberry touchscreen cordova rim-4.7

我正准备在黑莓风暴(9530模拟器)上运行手机。我一直在使用BB的内置浏览器测试我的webapp,它看起来还不错,但是当我试图从phonegap中查看一些代码时,它已经完全有点了,即使我将phonegap指向同一个url(我没有尚未达到在设备上本地运行代码的程度。)

我在谷歌上尝试了一个测试用例并得到了类似的结果。见下文。我怀疑我在这里缺少一些基本的东西。我希望这两个图像几乎完全相同。

浏览器 http://www.eleganttechnologies.com/outside/ImgDeviceBB9530WebGoogle.jpg

的PhoneGap http://www.eleganttechnologies.com/outside/ImgDeviceBB9530PgGoogle.jpg

[更新] 为了解释正在发生的事情,我针对W3移动网络酸测试运行了浏览器和嵌入式浏览器(phonegap):http://www.w3.org/2008/06/mobile-test/ 我肯定注意到两者之间的差异,但我还不知道'为什么'和'怎么去地址'。

酸通过内置浏览器
(来源:eleganttechnologies.com
顺便说一句 - 我今天早些时候跑了这个,并且比现在还多了几个绿色广场。

通过浏览器嵌入到phonegap中的酸 http://www.eleganttechnologies.com/outside/ImgDeviceBb9530PgAcid.jpg

5 个答案:

答案 0 :(得分:4)

免责声明:我对phonegap一无所知,但有一个很好的理论。默认情况下,BlackBerry上的嵌入式浏览器控件使用旧版本的渲染引擎,而不是BlackBerry浏览器本身。

在去年的黑莓开发者大会上,有人就此进行了一次演讲,并且有一个未记录的选项来使用更新的渲染引擎。 \

选项ID是17000(是的,一个幻数,可以改变,使用风险等),并且应该设置为true。不确定你是如何通过phonegap传递这个选项的(我不熟悉工具包),但使用BlackBerry API就是这样的:

BrowserContent content;
...
content.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, 17000, true);

答案 1 :(得分:2)

我不知道您使用的浏览器的具体细节,但我知道大多数大型网站都会检测您的OS +浏览器组合,以决定向您展示哪些HTML。

如果Google看到不同的用户代理,您可能会获得HTML的通用移动版本,而不是内置浏览器获得的Blackberry特定HTML。

如果您有权访问Web服务器,请尝试使用两种浏览器设置进行访问,并查看日志文件是否存在任何差异。这可能会告诉你一些有趣的事情。

答案 2 :(得分:1)

正如我们在您的酸性测试中看到的那样......

一个浏览器(内置的)正确报告为BlackBerry9530,另一个(phonegap)未显示用户代理[“Testing with。”]。 在这种情况下,Google会为您提供其主页的默认视图,而当您将自己报告为BlackBerry设备时,您将获得BlackBerry特定的渲染。

通过声音,使用phonegap正在删除默认的用户代理(很可能是因为它无法识别您的设备)。由于phonegap是开源的,最好的办法是进入,并调试它,看看当http请求离开设备并从那里追回时,用户代理会发生什么。

答案 3 :(得分:0)

也许一个浏览器具有另一个浏览器没有的功能?

答案 4 :(得分:0)

嗯。通过查看屏幕截图,我会说第二页可能缺少一些资源。它可能缺少一些图像,脚本和CSS文件,这将解释不同的l& f。知道Blackberry Browser Field API如何工作,我猜想使用BrowserField的实现没有正确完成。只是我的猜测。除此之外,当浏览器字段初始化时,调用者需要通过启用适当的浏览器功能(脚本,样式等)来正确配置它。再次,API以非常奇怪的方式完成,我已经陷入了这个陷阱。设置选项时,您不能只创建一个掩码(如CSS | WML | SCRIPT)并进行一次调用。选项是数字的,我相信,不重叠 - 但您仍然需要调用API来独立设置每个选项。

同样,为BrowserField异步加载资源的方式需要时间来理解。

只需我0.02美元。