Ben*_*enM 3 javascript events android cordova
我目前正在使用Apache Cordova 5.1.1版为iOS和Android构建本机应用程序.除了backbuttonAndroid内部的事件外,一切似乎都运行良好.
我想使用后退按钮浏览应用程序的屏幕(应用程序是使用Framework7构建的),但由于某种原因,backbutton事件永远不会触发.以下是我正在使用的(简化)代码的评论:
if( window.cordova )
{
document.addEventListener("deviceready", function() { MRC.init(); }, false);
}
var MRC =
{
init: function()
{
if( window.cordova )
{
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
// Prevent the back button:
document.addEventListener("backbutton", function(e) {
e.preventDefault();
MRC.view.router.back();
return false;
}, false);
}
}f
}
Run Code Online (Sandbox Code Playgroud)
init()函数内部的所有内容都可以工作,但backbutton事件监听器永远不会触发,当用户在Android设备上按下硬件后退按钮时,应用程序将关闭,而不是转到上一个视图.
根据Cordova的文件:
这是用户按下后退按钮时触发的事件.
Run Code Online (Sandbox Code Playgroud)document.addEventListener("backbutton", yourCallbackFunction, false);细节
如果需要覆盖默认的后退按钮行为,可以为"后退"事件注册事件侦听器.不再需要调用任何其他方法来覆盖后退按钮行为.现在,您只需要为'backbutton'注册一个事件监听器.
通常,一旦收到Cordova的"deviceready"事件,您将需要使用document.addEventListener附加事件侦听器.
支持的平台
- Android的
- BlackBerry WebWorks(OS 5.0及更高版本)
- Windows Phone 7和8
有没有人在这里遇到类似的问题,还是有一个我错过的解决方法?
现在,我不知道它在Windows Phone和Webworks上的效果如何,但另一种捕获后退按钮的简单方法是正确使用HTML5 history.pushStateAPI.简单来说,这意味着如果您在浏览器中加载您的应用程序,URL正在通过应用程序的每次导航进行更改,如果正确实现,这甚至意味着"从内存中恢复"这样的操作将完美地工作(通常情况并非如此)对于phonegap应用程序)因此比绑定backbutton事件更好.似乎framework7使用init pushState: true上的选项支持这一点Framework7().说实话,我有点担心他们说的描述
如果您开发Web应用程序(不是PhoneGap或主屏幕Web应用程序),则启用它很有用
这直接违背了我自己的经验,让我担心Framework7实现有一些粗糙的边缘,但也许这只是IE上的问题或其他什么?(我构建的历史支持的PhoneGap应用程序的唯一正确实现是针对Android并在Chrome上运行(我认为最新的PhoneGap应用程序的默认设置))
| 归档时间: |
|
| 查看次数: |
3890 次 |
| 最近记录: |