我发现在 2.0.0 之后的所有版本的 cordova 中都有一个奇怪的行为(如在 cordova-2.0.0.jar 中)
这是在 HTC One X 手机上的 html/css/jQuery/jQueryMobile 移动应用程序中。问题是硬件后退按钮返回到用户查看的最后一个 data-role=页面,而不是仅仅关闭软键盘。(LogCat 日志如下)
我的问题是:我能做什么,使用最新版本的cordova API,让硬件后退按钮只是关闭键盘,而不是回到我最近的data-role = page?
用例是:
- HTC One X 手机
- 打开应用程序;它在 page_1 上打开
- 点击页脚按钮转到 page_3
- 单击页脚按钮返回 page_1
- 点击输入框(软键盘出现)
- 点击硬件后退按钮
软键盘关闭,应用程序转到 page_3
- 在 cordova 版本 1.9.0 和 2.0.0 上,软键盘关闭并且应用程序停留在 page_1
- 2.0.0 之后的所有版本都这样做。
- 我不能使用旧版本,因为三星 Galaxy 3 有问题
下面的 html 完全按照我的描述执行。
<!DOCTYPE html>
<html>
<head>
<title>GFE Tool</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="scripts/jquery.mobile-1.2.0.min.css" />
<link rel="stylesheet" href="scripts/themeswf2.css" />
<link rel="stylesheet" href="scripts/jquery.mobile.simpledialog.min.css" />
<link rel="stylesheet" href="scripts/css_gfe.css" />
<script src="scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="scripts/jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
<script src="scripts/jquery.mobile.simpledialog2.min.js" type="text/javascript">
</script>
<script src="scripts/using_timios_ws.js" type="text/javascript" ></script>
<script src="scripts/jsrender.js" type="text/javascript"></script>
</head>
<body>
<section id="page_1" data-role="page" data-theme="a">
<header data-role="header" data-position='fixed'>
<div class="standard_table our_header" >
<span><img src="images/LogoWhite.png" width="187" height="61" alt="Timios logo"/></span>
<span class="setup_gear" style="height: 61px;background-color:#4d4d4d;">
<a id='the_gear' href="#setup_page">
<img src="images/geargray.png" width='61' height="61" alt="Set Up"/></a>
</span>
</div>
</header>
<div data-role="content" class="content">
<div >
<table class='standard_table'>
<tr><td><div class='page_title' >Enter Property Data</div>
<div class='page_title' id='div_welcome_user'></div>
</td>
</tr>
</table>
</div>
<input type="number" />
</div>
<div data-role="footer" data-position='fixed' align="center">
<a id='get_results_2' href="#" >
<div class="one_line_footer_button" >Get Closing Costs</div>
</a>
<a href="#page_3" id='CmdGoToNews' >
<div class="one_line_footer_button" >New at Our Company</div>
</a>
</div>
</div>
</section>
<section id="page_3" data-role="page" data-theme="f">
<header data-role="header" data-position='fixed'>
<div class="standard_table our_header" >
<a href="#page_1" >
<span><img src="images/LogoWhite.png" width="187" height="61" alt="HEADER IMAGE"/></span>
</a>
<span class="setup_gear" style="height: 61px;background-color:#4d4d4d;">
<a id="the_gear_3" href="#setup_page"><img src="images/geargray.png" width="61" height="61" alt="Set Up"/></a>
</span>
</div>
</header>
<div data-role="content" class="content">
<div id='divNews' class="about_us" style="padding-left: 5px; padding-right: 5px; ">
This is where New at our company goes.
</div>
</div>
<div data-role="footer" data-position='fixed' align="center" class='our_footer'>
<a id="NewAccountSetup" href="#setup_page" >
<div class="two_line_footer_button">New Account<br>Sign Up</div>
</a>
<a id='ClientSetup' href="#setup_page" >
<div class="two_line_footer_button">Client<br>Sign In</div>
</a>
<a href="#page_1" >
<div class='two_line_footer_button'>
<img src='images/home_icon_white_36.jpg' />
</div>
</a>
</div>
</section>
</body>
注意:我没有使用 PhoneGap Build。我正在eclipse中创建exec。
LogCat 日志(如下)在我按下硬件后退按钮的那一刻开始。它表明 CordovaWebView 正在跟踪我的“浏览器历史记录”- index: 0 处的 URL 是...当我使用旧版本的 cordova jar 时的日志没有显示这些行。
04-13 16:15:54.964: D/SoftKeyboardDetect(32763): Ignore this event
04-13 16:15:55.124: D/CordovaWebView(32763): The URL at index: 0is file:///android_asset/www/gfe_one.html
04-13 16:15:55.124: D/CordovaWebView(32763): The URL at index: 1is file:///android_asset/www/gfe_one.html#page_3
04-13 16:15:55.124: D/CordovaWebView(32763): The URL at index: 2is file:///android_asset/www/gfe_one.html#/android_asset/www/gfe_one.html
04-13 16:15:55.124: D/SoftKeyboardDetect(32763): Ignore this event
04-13 16:15:55.164: D/Cordova(32763): onPageFinished(file:///android_asset/www/gfe_one.html#page_3)
04-13 16:15:55.164: D/Cordova(32763): Trying to fire onNativeReady
04-13 16:15:55.164: D/DroidGap(32763): onMessage(onNativeReady,null)
04-13 16:15:55.164: D/DroidGap(32763): onMessage(onPageFinished,file:///android_asset/www/gfe_one.html#page_3)
04-13 16:15:56.475: I/Adreno200-EGLSUB(32763): <ConfigWindowMatch:1991>: Format RGBA_8888.