2011-04-19 68 views
0

我正在开发一个jQuery手机网站(jQM)。这很棒,但有一件事让我感到困扰。jQuery mobile:在不支持的浏览器中优雅地降级?

jQM is not supported in all mobile browsers(特别是BlackBerry 5)。该网站看起来华丽的Android浏览器:在Android上的Opera Mini,它实际上已经损坏:(

我开发的网站使用渐进增强,很自然,所以它没有jQM的作品 - 如果我可以告诉浏览器不要用它

问:对于像的Opera Mini在Android平台上,是有办法,我可以检查JQM的支持,而且完全不应用JQM适当

  • 如果JQM在这个浏览器中,使用支持?它
  • 如果不是,请不要加载jQM javascript,不要加载jQM样式表s,并使用基本的JavaScript网站。

我了解属性,但你大概需要加载JQM使用它:

$.mobile.gradeA() 

谢谢!

回答

0

jQuery Mobile本身测试浏览器功能。

您应该自定义代码以使其不再执行增强功能。 如果你有兴趣试试这里:https://github.com/jquery/jquery-mobile/blob/master/js/jquery.mobile.support.js

另外:如果它决定工作 - 它可能应该。尽量固定问题,而不是试图让jQuery Mobile的降解

[编辑]

确定。让我解释。 JQM遵循逐步增强的思想,测试浏览器功能并在浏览器通过测试时使用它的小部件和内容。这就是为什么我说它应该工作,如果它尝试。

如果它试图增强和失败 - 这是JQM方面的缺陷/缺失支持,并且在理想的世界中,您应该期望它得到修复。现实表明你不能指望它,但你可以期待它;)这还不是一个发布。

我试着用“尝试修复......”的方法是下载JQM存储库,在支持测试中添加一行或两行,并让它们检测导致JQM在特定情况下失败的功能。然后运行make,你有一个全新的JMQ为你工作。

之后,你可以建议你的核心团队的变化,他们会改善。

[编辑]

其实,这是你真正想要的:

一个很好的方式得到你的支持探测代码。

您可以实现自己的gradeA函数将返回 $.support.mediaquery&&yourcondition

参见:http://jquerymobile.com/demos/1.0a4.1/#docs/api/globalconfig.html

这可以防止JQM从您不希望浏览器中工作。

+0

“如果它决定工作 - 它可能应该”< - 不确定这是什么意思? – simon 2011-04-19 13:43:25

+0

我对这个回复很感兴趣,但是恐怕我无法弄清楚你的意思。我的代码本身并不是问题 - jQuery Mobile演示本身不适用于例如Android上的Opera Mini 6。 – simon 2011-04-19 18:17:35

+0

我决定把答案放在一个可读性编辑 – naugtur 2011-04-20 08:02:13

0

如何使用jquery support对象?有移动的new properties。从文档中,gradeA$.support.mediaquery的快捷方式。

+0

啊,先加载jQuery,然后使用'.gradeA'来有条件加载jQM?狡猾!这确实假设所有浏览器都支持jQuery,尽管... – simon 2011-04-19 11:29:50

+0

@simon,是的,这就是我的建议。我相信,jquery将支持现代移动浏览器,支持java脚本。是的,有可能jQuery API的某些部分可能不被支持,但所有的核心功能,如浏览器检测,事件,选择器应该工作! – VinayC 2011-04-19 11:38:27

+0

听起来不错,谢谢。 – simon 2011-04-19 11:47:46