0

我发现在 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.
4

2 回答 2

0

@Nanashi 写道: 一旦加载了phonegap/cordova,您需要为后退按钮添加一个事件处理程序。请参阅此 stackoverflow.com/questions/14207690/stop-exit-on-back-button-android-in-phonega‌​p-build

注意:在我现在处理硬件后退按钮的 js 函数中,我只是返回;示例做其他事情或有 // 在这里做事情

于 2013-05-09T14:24:55.517 回答
0

打开您的 res/xml/config.xml 文件并查找:

<preference name="useBrowserHistory" value="false" />

您可能希望使用 useBrowserHistory 的值来返回返回按钮的旧工作方式。

于 2013-04-17T01:59:46.403 回答