【发布时间】:2014-02-01 18:02:34
【问题描述】:
在我的 jQuery 移动应用程序中,我有 3 个页面,每个页面都在一个单独的 Html 文件中 主页 --> Page1 包含要提交的表单 --> 第 2 页,当我从主页单击 Page1 链接时,需要 4-点击后5秒打开并显示Page1。
在Page2中,我有一个用于控制移动设备后退按钮的代码,因此当用户在page2处单击设备后退按钮时,应用程序直接返回主页而不通过抛出表单页面“Page1”,然后返回主页如果我单击 Page1 链接,它将打开并直接显示 Page1 零延迟,此代码提高了 jQuery 的性能并使点击速度成为本机应用程序,但是当我从 Page2 返回后直接单击 Page1 链接时会发生这种情况。然后延迟返回。
我不知道这段代码是如何以及为什么提高了性能,并且因为它让用户在点击按钮后等待 4 秒然后打开页面非常烦人,所以我尝试在以下情况下应用相同的方式我导航到 Page1 以提高点击速度,但它没有用!延迟还在。任何人都知道为什么控制设备返回按钮的代码提高了速度?
请帮帮我..
Page2中控制设备返回按钮的代码
$(document).on("pagebeforechange", function (e, data) {
if (data.toPage && data.options.fromPage) {
var _from = data.options.fromPage[0].id;
var _to = data.toPage[0].id;
if (_from === "page2" && _to === "FormPage") {
$.mobile.pageContainer.pagecontainer("change", "Home.html");
e.preventDefault();
}
}
});
主页
<div data-role="page" id="home">
<div data-role="header" data-position="fixed">
<h1>Header - Home</h1>
</div>
<div data-role="content"></div>
<a href="FormPage.html" data-transition="none" class="ui-btn" data- role="button">Page1</a>
<div data-role="footer" data-position="fixed">
<h1>Footer</h1>
</div>
</div>
FormPage.html
<!-- Page 1 -->
<div data-role="page" id="FormPage">
<div data-role="header" data-position="fixed">
<h1>Header - Page 1</h1>
</div>
<div data-role="content"></div>
<form>
// form elements
<div class="ui-btn ui-input-btn ui-icon-check " >
<input type="button" id="submit" data-inline="true" value=" submit" data-iconpos="left" />
</div>
<div data-role="footer" data-position="fixed">
<h1>Footer</h1>
</div>
</div>
Home.js // 我尝试提高点击速度的方法
$(document).on("pagebeforechange", function (e, data)
{
if (data.toPage && data.options.fromPage) {
var _from = data.options.fromPage[0].id;
var _to = data.toPage[0].id;
if (_from === "Home" && _to === "FormPage") {
$.mobile.pageContainer.pagecontainer("change", "FormPage.html");
e.preventDefault();
}
});
【问题讨论】:
-
您是否尝试过将
data-prefetch添加到锚链接?<a href="FormPage.html" data-transition="none" data-prefetch>? -
@Omar是的,我之前试过了,但是不影响速度,而且表单验证失效了
-
@Omar当你的后退按钮代码执行时,主页上添加了一个魔法,当我点击链接时延迟变为零,但是这个魔法在从第 2 页返回后会停留 1 分钟!,我有尝试对链接应用相同的方式,但它对我不起作用。请你能帮我我花了 1 天时间搜索并尝试解决这个问题,但没有解决:( 解决这个问题非常重要,我将不胜感激
-
一种可能的方法是预取页面并保留 DOM。一旦您离开,JQM 就会删除外部页面。将
data-dom-cache="true"添加到所有页面div。 -
pageinit每页触发一次,使用pagebeforeshow。
标签: jquery-mobile