在Cordova 2.0.1及更新版本中,HTC One硬件背键非常古怪

时间:2013-04-14 21:45:47

标签: android cordova jquery-mobile

我发现在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手机
  • 打开应用;它在第1页上打开
  • 点按页脚按钮转到page_3
  • 点击页脚按钮返回page_1
  • 点击输入框(软键盘出现)
  • 点击硬件后退按钮

软键盘关闭,应用程序转到page_3

  • 在cordova版本1.9.0和2.0.0上,软键盘关闭,应用程序停留在page_1
  • 2.0.0之后的所有版本都可以。
  • 我无法使用旧版本,因为它们与Samsung 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正在跟踪我的“浏览器历史记录” - 索引处的URL:0是...当我使用较旧版本的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.

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

注意:在我现在处理硬件后退按钮的js函数中,我刚刚返回; 这些例子做其他事情或者//在这里做点什么