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

时间:2015-04-21 06:09:09

标签: cordova windows-phone-8 browser-history

我尝试在我的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; 
}

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

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

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

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

请帮助这些家伙

提前致谢

1 个答案:

答案 0 :(得分: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);
}

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

function onBackKeyDown() {
    // Back key pressed, do something here
}

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>

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