【问题标题】:Handling Android back button in mobile site without using Phonegap在不使用 Phonegap 的情况下处理移动网站中的 Android 后退按钮
【发布时间】:2011-11-04 09:11:57
【问题描述】:

我需要使用简单的 Javascript 拦截 Android 后退按钮事件(如果可能的话),

我有一个移动网站,我想提醒用户并在点击网站任何部分的后退按钮时关闭整个网站,我不需要返回我的历史记录

注意:我不想在我的网站中包含 Phonegap 支持。

任何想法都会很棒!

编辑: 我也用过

window.onbeforeunload = function() {
  return "Do you want to exit?";
};

这也无助于我的情况,因为它会在卸载 url 时被调用,我正在使用 div 使用#ID (using Jquery Mobile <div data-role="page"></div>) 导航页面到页面

所以我非常希望在点击 Android 后退按钮时获得一个事件

【问题讨论】:

    标签: javascript android mobile cordova


    【解决方案1】:

    如果没有一些本机 Java 代码,您将无法检测到该事件,因此您必须侦听 hashchange 事件以及历史堆栈以检测用户何时返回或使用 Phonegap。如果您需要在用户返回之前做某事,那么您唯一的选择就是一些本机代码。

    【讨论】:

      【解决方案2】:

      您是否尝试过捕捉<body onunload=""\> 事件?您可能可以在其中执行window.close 以防止调用历史记录。

      【讨论】:

      • 我的导航不是逐页导航,而是从 div 到 div(整个代码在一个 html 文件中)
      【解决方案3】:

      试试 window.onpopstate

      window.onpopstate = function (evt) {              
          if (isAndroid()) {   
              // Android hack. After printing location and state, I can read the state. Not before.
              var triggerCheck = "location: " + document.location + ", state: " + JSON.stringify(evt.state);
              //check evt.state if its previous url or not then do your thing   
          }  
      };
      

      重要的是尝试使用 evt.state 跟踪您的位置。 它似乎对我来说很好用。

      【讨论】:

        猜你喜欢
        • 2013-05-10
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-22
        • 2015-04-10
        • 2021-10-13
        • 1970-01-01
        相关资源
        最近更新 更多