jQuery Mobile:我应该使用pageBeforeShow还是pageBeforeChange进行最后的调整?

时间:2012-03-20 14:21:50

标签: android jquery-mobile show transitions

我正在开发jQueryMobile和PhoneGap中的移动应用程序。通常,由于jQM的性质或者因为它是关于加载数据,页面在显示之前需要进行一些最后的调整。例如,表单字段需要使用动态检索的数据填充,或者列表项的内容需要给出稍微不同的样式以便更好地适应。

我目前正在使用pageBeforeShow事件处理程序进行所有这些调整。但我想知道我是否应该使用pageBeforeChange事件处理程序。 jQM文档并没有真正说清楚这两个事件是如何相互关联的,即首先被解雇的事件。

我所知道的 我知道以下

  • pageBeforeShow和pageShow在所有jQM的标记(例如,使列表项看起来很漂亮)被应用后被触发。
  • pageBeforeShow和pageShow绑定到特定页面,而每当发生页面更改时都会调用pageChange(因此,如果要在用户到达之前对一个页面进行指定更改,则需要测试event.toPage属性)

为什么我要问 这就是为什么我想知道page(Before)Change是否是更好的候选者的背景。

jQuery Mobile页面转换在许多设备上都很尴尬。 Android设备上的一个大问题是页面更改是跳跃式的:无论转换类型(淡入淡出,弹出等)如何,用户留下的页面将在新页面或多或少完成之后短暂地弹回到视图中。浏览器。 根据我的经验,这主要发生在其他动画正在运行或在页面转换发生时启动时。基本上,Android浏览器似乎不想将转换应用于实际上不在视图中的元素,因此它将在jQM页面之间来回切换。 我已经开发了一种解决方法,我将页面的任何标记和表单调整延迟大约1000毫秒,这可以防止闪烁,但这意味着用户可能会在页面进入视图后在屏幕上看到这些调整。

这种分析让我觉得pageBeforeChange可能是附加任何标记和表单调整的更好选择。但这将是代码的重大改写,我不知道我将会遇到什么无法预料的事情。有没有这些活动的经验?

1 个答案:

答案 0 :(得分:0)

我不确定pagebeforechange是否是最佳选择。我没有将pagebeforechange视为页面级事件,而是更多的网站级事件。我主要是因为我想接管导航或构建动态页面。

当我想将事件处理程序附加到页面时,我使用pageinit。当我想在页面显示之前更改页面的内容或外观时,我使用pagebeforeshow

希望这有帮助。