为wp8 cordova应用程序实现后退按钮功能

Ran*_*rma 4 browser-history cordova windows-phone-8

我尝试在我的wp8 cordova应用程序中实现后退按钮功能,按下设备上的硬件后退按钮应导航到应用程序的上一页.

我做了什么

function onLoad() {
    document.addEventListener("deviceready", init, false);
    document.addEventListener("resume", onResume, false);
    document.addEventListener("backbutton", onBackKeyDown, false);
}

function init() {
  //some code
}

function onResume() {
  //some code   
}

function onBackKeyDown() {
   window.history.back();
   return false; 
}
Run Code Online (Sandbox Code Playgroud)

我也试过替换"window.history.back();" "navigator.app.backHistory();" 这似乎也不起作用

然后我尝试将代码放在try catch块中

try
{
navigator.app.backHistory();
//window.history.back(); 
}
catch (e)
{
console.log("exception: " + e.message); 
}
Run Code Online (Sandbox Code Playgroud)

这似乎也失败.无论我做什么,应用程序似乎退出应用程序而不是向后移动有趣的是当我在IE控制台中尝试这个似乎完美的工作

请帮助这些家伙

提前致谢

Sit*_*hys 6

所以让我们尝试另一种适用于wp8的方法.此方法需要WinJS框架,并将像这样工作:

在onDeviceReady函数中,您将使用此代码:

if (device.platform == "windows") {
    // Get the back button working in WP8.1
    WinJS.Application.onbackclick = function () {
        onBackKeyDown();
        return true; // This line is important, without it the app closes.
    }
}
else {
    document.addEventListener("backbutton", onBackKeyDown, false);
}
Run Code Online (Sandbox Code Playgroud)

现在只需添加一个函数来处理onBackKeyDown事件,就是这样:

function onBackKeyDown() {
    // Back key pressed, do something here
}
Run Code Online (Sandbox Code Playgroud)

Cordova挂钩到BackButton-Event的标准方法如下所示:

<!DOCTYPE html>
<html>
  <head>
    <title>Back Button Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

    // 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() {
    }

    </script>
  </head>
  <body onload="onLoad()">
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这里重要的是在DeviceReady函数中调用BackButton-Event!