phonegap中的后退按钮未注册且无法正常工作

时间:2013-06-14 04:54:13

标签: android cordova

我正在使用phonegapand我正在注册后退按钮onDeviceReady功能,但在点击设备的后退按钮时调用函数。我添加了

<script src="lib/cordova-2.6.0.js"></script>

document.addEventListener("backbutton", onBackClickEvent, false);

function onBackClickEvent() {
    alert("back onBackClickEvent");     
}

这个onBackClickEvent()函数没有被调用,我从来没有看到过警报。我也收到了Uncaught ReferenceError错误:cordova未定义

可能是什么错误请建议我。提前谢谢。

5 个答案:

答案 0 :(得分:6)

不要忘记调用“ deviceready ”事件。

来自phonegap doc:

  

每个Cordova应用程序都应该这是一个非常重要的事件   使用

     

Cordova由两个代码库组成:native和JavaScript。虽然   正在加载本机代码,显示自定义加载图像。然而,   只有在DOM加载后才会加载JavaScript。这意味着您的网站   应用程序可能会调用Cordova JavaScript函数   在它加载之前。

     

当Cordova满载时,Cordova deviceready事件将会激活。   设备触发后,您可以安全地拨打Cordova电话   功能

试试这个

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady()
{
    document.addEventListener("backbutton", onBackClickEvent, false);
}

function onBackClickEvent()
{
    alert("back onBackClickEvent");     
}

答案 1 :(得分:4)

我得到了问题的答案。我很挣扎,许多开发人员试图解决它,当我发现这个愚蠢的错误时,我发现自己很傻。

我在写

document.addEventListener("deviceready", onDeviceReady(), false);

而不是

document.addEventListener("deviceready", onDeviceReady, false);

这就是为什么我收到错误cordova没有定义,没有其他听众登记。

答案 2 :(得分:4)

升级到cordova 3.1后我遇到了这个问题。事实证明,这必须在config.xml phonegap 3. *中明确添加。

<feature name="App">
        <param name="android-package" value="org.apache.cordova.App" />
    </feature>

请参阅此link

答案 3 :(得分:3)

对于后退按钮,我使用此

//Android back button handler methods
$(document).ready(function()
{
document.addEventListener("deviceready", setOverrideBackbutton, false);
});

/**
* Allow override of the back button on Android platforms
*/
function setOverrideBackbutton()
{
if (typeof device != "undefined" && device.platform == "Android")
{
    navigator.app.overrideBackbutton(true);
}
document.addEventListener("backbutton", backButtonTap, true);
}

/**
 * Callback after a backbutton tap on Android and windows platforms.
 * Do nothing.
 */
function backButtonTap()
{
//Do not remove
}

答案 4 :(得分:1)

请检查cordova.js的路径和文件名是否正确。 确保你在项目属性中检查了真正的cordova.jar文件和Android私有库 - &gt; Java构建路径 - &gt;订单&amp;出口。

有关详细信息,请查看此link

如果您导入多个文件,则将cordova.js文件放在other.js文件之前,它应该可以正常工作。

并且只需使用

<script src="cordova-2.6.0.js"></script>
而不是     

并检查此link1&amp; link2