【问题标题】:Implementing Back Button functionality for wp8 cordova application为 wp8 cordova 应用程序实现后退按钮功能
【发布时间】:2015-04-21 06:09:09
【问题描述】:

我尝试在我的 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 控制台中尝试这个时,它似乎工作得很好

请帮助这些人

提前致谢

【问题讨论】:

  • 请在您的 "addEventListener("backbutton..." 之前和之后添加 10 行代码。
  • @Sithys 嗨,你能解释一下你需要什么吗?
  • 只有当你有一个 deviceready 事件监听器,如果 deviceready 被成功触发,该事件监听器才会工作。
  • 嗨@Sithys 我的代码看起来像这个函数 onLoad() { document.addEventListener("deviceready", init, false); document.addEventListener("resume", onResume, false); document.addEventListener("backbutton", onBackKeyDown, false); } 函数 onBackKeyDown() { window.history.back();返回假; } 类似的东西
  • 您能否在您的第一篇文章中将其编辑到代码标签中?

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


【解决方案1】:

所以让我们尝试另一种适用于 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

【讨论】:

  • 嗨,我希望应用程序返回的方式似乎无法正常工作,但是会跳过每个中间页面到第一页提前谢谢
  • 我是否理解正确,我发布的功能会在您每次单击时将您导航到第一页,而与您实际所在的页面无关?请提供您绑定到 onBackKeyDown 函数的代码
  • 试试这个 onBackKeyDown 函数:history.go(-1);
  • 您好,已经试过了,您可以给邮箱,以便我给您发送示例代码,以便您重现问题。
  • 我想帮你,但是我没有WP8手机。研究这个问题并尝试那里给出的解决方案。如果这对您没有帮助,请告诉我。 stackoverflow.com/questions/16542118/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多