【问题标题】:jQuery mobile: degrade gracefully in non-supported browsers?jQuery mobile:在不受支持的浏览器中优雅降级?
【发布时间】:2023-03-08 16:36:01
【问题描述】:

我正在用 jQuery mobile (jQM) 开发一个网站。这很棒,但有一件事让我很困扰。

jQM is not supported in all mobile browsers(尤其是黑莓 5)。该网站在 Android 浏览器中看起来很漂亮:在 Android 上的 Opera Mini 上,它实际上已经坏了:(

我自然而然地使用渐进增强开发了该网站。所以它可以在没有 jQM 的情况下工作 - 如果我可以告诉浏览器不要使用它!

问题:对于像 Android 上的 Opera Mini 这样的平台,有没有一种方法可以检查 jQM 支持,并在适当的时候完全取消应用 jQM?

  • 如果此浏览器支持 jQM,请使用它。
  • 如果不是,请不要加载 jQM javascript,不要加载 jQM 样式表,并使用基本的 JavaScript 站点。

我知道gradeA() 属性,但您可能必须加载jQM 才能使用它:

$.mobile.gradeA()

谢谢!

【问题讨论】:

    标签: jquery jquery-mobile browser-support


    【解决方案1】:

    使用jquery support 对象怎么样?移动端有new properties。在文档中,gradeA$.support.mediaquery 的快捷方式。

    【讨论】:

    • 啊,所以先加载jQuery,再用.gradeA有条件地加载jQM?狡猾!这确实假设所有浏览器都支持 jQuery...
    • @simon,是的,这就是我的建议。我相信支持 java-script 的现代移动浏览器会支持 jquery。是的,可能不支持 jquery API 的某些部分,但浏览器检测、事件、选择器等所有核心功能都应该可以工作!
    【解决方案2】:

    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 使用您不想要的浏览器。

    【讨论】:

    • “如果它决定工作 - 它可能应该”
    • 我对此回复很感兴趣,但恐怕我无法理解您的意思。我的代码本身没有问题 - jQuery Mobile 演示本身在例如Android 上的 Opera Mini 6。
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 2011-03-30
    • 2014-09-30
    相关资源
    最近更新 更多