【问题标题】:Why does google.com look different on blackberry & phonegap vs. blackberry & browser为什么 google.com 在黑莓和 phonegap 与黑莓和浏览器上看起来不同
【发布时间】:2009-05-08 03:09:39
【问题描述】:

我很想在黑莓风暴(9530 模拟器)上启动和运行 phonegap。我一直在使用 BB 的内置浏览器测试我的 web 应用程序,它看起来还不错,但是一旦我尝试从 phonegap 中查看一些代码,它就完全有点问题了,即使我将 phonegap 指向相同的 url(我没有'还没有达到在设备上本地运行代码的地步)。

我在 google 上尝试了一个测试用例,得到了类似的结果。见下文。我怀疑我在这里遗漏了一些基本的东西。我希望这两个图像几乎相同。

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

电话间隙 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

【问题讨论】:

  • 我想在 Blackberry 上使用 PhoneGap 实现的一些功能现在也可以通过他们的小部件来实现,它使用功能更丰富的浏览器。
  • JJ -- 你能详细说明一下吗?特别是哪些小部件?有链接吗?
  • @Axeva - 现在有点被事件所克服。这实际上只与较旧的 BB 版本相关。

标签: browser blackberry touchscreen cordova rim-4.7


【解决方案1】:

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

在去年的 BlackBerry 开发者大会上,对此进行了讨论,并且有一个未记录的选项可以使用更新的渲染引擎。 \

选项 ID 是 17000(是的,一个幻数,可能会更改,使用风险自负等),应设置为 true。不确定如何通过 phonegap 传递此选项(我不熟悉该工具包),但使用 BlackBerry API 类似于:

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

【讨论】:

  • 这看起来很有希望 - 我会尽快研究它。
  • 好的 - 所以我没有很快理解它,但这基本上是正确的。最新的 phonegap 实现了这种技术,但它们的语法略有不同。
  • @JJRohrer - 尽管已经很长时间了,但我也面临着类似的问题。你能告诉我你是怎么解决这个问题的吗?
【解决方案2】:

我不知道您使用的浏览器的具体情况,但我知道大多数大型网站会检测您的操作系统 + 浏览器组合来决定向您显示哪些 HTML。

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

如果您可以访问网络服务器,请尝试使用两种浏览器设置访问它,看看日志文件是否有任何差异。这可能会告诉你一些有趣的事情。

【讨论】:

  • 虽然用户代理显然是问题的一部分,但这并不能解释酸性结果的差异,而且在我自己的代码中,它不使用浏览器检测,结果仍然相当不同。
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 对 - 但是,.. 它不应该是同一个浏览器吗?以此类推,通过 iPhone 上的移动 Safari 浏览 google 应该生成与嵌入式 UIWebView 相同的页面,该页面也指向同一个 google 页面。
    【解决方案5】:

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

    BrowserField 资源的异步加载方式也需要时间来理解。

    只要我的 0.02 美元。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多