【问题标题】:How should I write a Jquery Mobile app for browsers with and without javascript support?我应该如何为有和没有 javascript 支持的浏览器编写 Jquery Mobile 应用程序?
【发布时间】:2011-06-05 00:40:45
【问题描述】:

我正试图围绕 jQuery Mobile。我的目标是构建一个非常快速的应用程序,其外观和感觉尽可能接近原生应用程序(至少对于现代设备而言)。

我了解在页面之间导航有两种方式:

  1. 将每个页面加载为单独的页面,并使用常规 html 锚链接到其他页面。

  2. 将所有(或多个)页面放在一个网页上,并通过 javascript($.mobile.changePage(方法)和类似的 api 函数)在它们之间导航。

第一种方法应该适用于所有浏览器,但性能很差,因为每个页面转换之间存在延迟。

第二个看起来应该快得多,所以我肯定更喜欢这种方法。但是,对于没有 javascript 支持的移动设备浏览器,这将如何工作呢?这显然违背了 jQuery Mobile 为 C 级浏览器提供优雅降级体验的目标。

在我看来,我需要实现我的应用程序两次,一次针对支持 javascript 的浏览器进行优化,一次针对不支持的浏览器进行优化?使用可能是另一种选择,但这看起来更加混乱。

解决此困境的推荐方法是什么?有什么我没有注意到的吗?

谢谢,

阿德里安

【问题讨论】:

  • 哪些手机浏览器不支持Javascript?
  • 我想有很多不支持的,我有一个三星 U900(退休但仍然拥有它),它只有几年的历史,IIRC 它不支持 javascript .世界上还有很多国家的普通人没有智能手机。
  • 使用 javascript 支持。
  • @SLaks:实际上有很多。请参阅此矩阵:jquerymobile.com/gbs
  • 为了事实起见 - 该 GBS 表中的所有浏览器(以及更多)都支持 javascript 的子集,有些人称之为“支持 javascript”;)

标签: javascript jquery jquery-mobile progressive-enhancement graceful-degradation


【解决方案1】:

首先:你的观点是错误的。

请参阅Local, internal linked "pages" in here 并仔细阅读。链接href="#pageelementid" 可以正常工作,并且也可以在任何支持 HTML4 的浏览器中工作[在某些情况下可能需要<a name="pageelementid">,我不再确定],唯一的区别是所有页面都可以一次看到。

第二件事是,如果你使用 1 号方式,它看起来也会很漂亮。是的,它会加载,但是在支持 javascript 的浏览器中,它加载了 AJAX,并且页面之间没有令人讨厌的闪烁。此外 - 出现“加载”弹出窗口。

jQuery Mobile 应该让你创建一个没有任何 JS 的纯 html 应用程序。 JQM 本身对页面进行了增强,使其看起来不错并使用 AJAX。尝试创建一个可以在所有浏览器中运行的应用程序(我的灵感:lynx)并为此使用 JQM 标记。您愿意编写的任何 javascript 都应该作为一种增强功能来发挥作用——让它变得更好,而不是让它完全发挥作用。

祝你好运!

【讨论】:

  • 感谢您指出我的错误 - 现在我更清楚地看到了它应该如何工作。 jQuery Mobile 比我预期的还要好! :-)
【解决方案2】:

目前支持较小浏览器的想法不是优雅地降级,而是增强。如果您从头开始构建网站以在没有 javascript 的情况下工作,然后对其进行增强,那么您几乎知道该网站将正常工作(而不是必须修复它或构建辅助站点)。

关于您指定的两个选项,如果我的带宽有限并且很多人每月的下载量有限,那么我作为移动用户的首选是第一个。

将所有页面合并到一个大文件中似乎是个好主意(已下载),但您可能会在某些手机上遇到内存限制。如果他们只想访问两个页面怎么办,为什么要强迫他们下载整个网站呢?

【讨论】:

  • 我理解你试图提出的观点,但它并不完全适用于我的场景。我在 SaaS 网站上进行时间跟踪,而不是常规网站(如天气信息或地图)。它的目的是为人们提供一种非常快速的方式来跟踪他们每天的工作时间。我们的大多数客户每天都会使用几次。因此,速度至关重要。理想情况下,我们希望为手机实现原生应用,但我们(目前)没有资源为客户使用的每个平台执行此操作。
  • 当您的 JQM 应用程序完成后,您将不再需要本机应用程序。谷歌phonegap
  • @naugtur:我知道 phonegap,但我们仍然需要本地应用程序。即使正确实施,JQM 网站在速度和可用性方面也无法与真正的应用程序相提并论。对于暂时以及我们无法原生支持的那些设备来说,这是一个很好的解决方法。
  • 时间跟踪必须以秒为单位,而不是毫秒,这就是我希望它足够的原因。我不会推荐它用于射击游戏;)
猜你喜欢
  • 2012-07-13
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多