根据3.5版的Cordova文档:
http://cordova.apache.org/docs/en/3.5.0/cordova_events_events.md.html#Events
我尝试使用以下代码禁用后退按钮。触发onDeviceReady事件,但后退按钮事件不会触发。
// Wait for device API libraries to load
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// device APIs are available
//
function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
}
// Handle the back button
//
function onBackKeyDown() {
}
在我的控制台中收到此消息的其他有趣消息中包含:
exec() call to unknown plugin App.
我已经看到了这个问题的几个答案,包括以下编辑config.xml文件并添加:
<feature name="App">
<param name="android-package" value="org.apache.cordova.App" />
</feature>
这些都不起作用。
答案 0 :(得分:3)
要禁用本机后退按钮功能,您需要在传递给处理程序的事件对象上调用preventDefault()
:
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown(e) {
e.preventDefault();
}
如果您收到其他错误,我建议删除并重新添加Android平台(确保首先安装最新版本的Cordova):
$ npm update cordova -g
$ cordova platform remove android
$ cordova platform add android
如果您可以分享更多项目,那将是最好的,因此我可以看到出现问题的地方。您可以做的其他检查:
确保为所有其他功能安装了所有插件cordova plugin ls
将为您提供已安装的任何插件。
确保您参考<script type="text/javascript" src="cordova.js"></script>
。
检查设备就绪事件是否被触发。
在运行应用的Safari开发工具中调试时,检查没有JavaScript错误。
答案 1 :(得分:1)
此错误提示: exec调用未知插件App
我检查了包含cordova构建中包含的App插件的App.java文件,我找到了以下行:
protected static final String TAG = "CordovaApp";
这与3.5附带的cordova.js文件中的相应exec()调用不匹配。所以,我把它改成了
protected static final String TAG = "App";
现在,根据文档,事件覆盖了cordova的所有工作。
干杯。