【问题标题】:Use JavaScript/jQuery to detect the Android back button使用 JavaScript/jQuery 检测 Android 后退按钮
【发布时间】:2017-11-03 09:32:03
【问题描述】:

目前我想制作一个功能来检测 Android 后退按钮被按下并对其进行一些操作。

  1. 用户打开应用程序,然后单击一个按钮。此按钮允许用户打开网站。

  2. 用户在第2页填写信息,想要返回上一页,在Android手机上点击返回按钮。

  3. 后退按钮可帮助用户关闭网站并返回我的应用程序,而不是返回第 1 页。

如何使用jQuery 或 JavaScript 来检查用户按下的后退按钮?这样我就可以防止后退按钮关闭网站,但重定向到另一个页面。

有没有办法检测浏览器 Android 后退按钮事件?我想覆盖Android后退按钮的默认设置,并在里面添加一些代码。

PS:不使用 Java。

  • 顶部的后退按钮(浏览器后退按钮)可以返回上一页。
  • 底部的后退按钮(后退按钮手机)帮助我关闭网站。
  • 我想让底部的后退按钮也回到上一页。

See this.

【问题讨论】:

  • 你的代码在哪里?到目前为止,您尝试了哪些方法,为什么失败了?
  • 所以不是家庭作业论坛老兄,向我们展示你的工作,我们会提供帮助
  • 另外,覆盖系统键的行为是一件坏事。如果用户想回去,让他们回去。
  • 当你在 Chrome 中打开一个网站时,当你按下返回时,Chrome 应用会处理它,而不是你的应用
  • 如果您使用的是cordova,请访问this链接。您可以覆盖设备后退按钮功能

标签: javascript android jquery html


【解决方案1】:

您需要覆盖 WebView Activity 上的 onBackPressed 并检查 webview 是否可以返回。

@Overide
public void onBackPressed() {
    if(webview.canGoBack())
        webview.goBack();
    else
        super.onBackPressed();
}

Meta:当给出这个答案时,这个问题并不特定于“仅 JavaScript”“不在 Java 中编码” 等。即仅由后端处理。这个答案严格适用于 Android 端,而不是后端端。如果来自 Android 的人需要这个答案,我会保留这个答案。

【讨论】:

  • @nitinkumarp 是的,我知道这种方法。但我不想要Java。我也没有投反对票。
  • 当它可以被Android轻松处理时,为什么您需要JS代码来检测Android。处理您的网站后退导航,它将按您的意愿工作。
【解决方案2】:

您也可以使用 JavaScript 来实现。

  1. 使用以下方法或尝试查找 deviceReady 方法。

     <body onload="onLoad()">
    
  2. 将以下代码放入您的 main.js 中。一旦 body 被加载,这个函数就会被调用。

     function onLoad() {
         document.addEventListener("deviceready", onDeviceReady, false);
     }
    
  3. On device ready 是在您的设备准备就绪后触发的功能。

     function onDeviceReady() {
         // Register the event listener
         document.addEventListener("backbutton", onBackKeyDown, false);
     }
    
  4. 准备就绪后,您可以覆盖后退按钮功能。

     function onBackKeyDown() {
         // Do stuff here
     }
    

我可以知道这就是你要找的吗?

或者你可以使用hashChange事件

window.addEventListener("hashchange", function(e) {
    // ...
})

如果您需要支持旧版浏览器,请查看 Modernizr 的 HTML5 Cross Browser Polyfills wiki 页面上的 hashChange Event 部分。

【讨论】:

  • 这个在应用程序中运行良好。但是当网站打开时,它无法工作。就像我们通常所做的那样,如果 keycode == 返回,那么它就会返回。这个是给网站的。但是我怎样才能得到安卓手机上后退按钮的键码呢?这样我就可以对它做点什么了。
  • 我已经编辑了我的答案。请看一次。您可以检查 hashChange 事件。我已经添加了示例也如何做到这一点。
  • 不。我看到了这种方法,但它不符合我的要求。
  • 请检查一下link。可能对你有用。
【解决方案3】:

我会说你应该专注于功能,而不是设备对该功能的实现。

Android 后退按钮与浏览器后退按钮的行为相同。

由于两者都对 URL 状态做出反应,因此您可以通过 URL 控制行为。您可以通过 pushState 实现这一点。您可以从 MDN here 阅读有关 pushState 的信息,这里有一篇关于使用它的 CSS Trick 文章。

【讨论】:

    【解决方案4】:

    您可以使用 JavaScript不使用 jQuery

    window.addEventListener("hashchange", function(e) {
        if(e.oldURL.length > e.newURL.length)
            alert("back")
    });
    

    Demo in CodePen

    来源:How can I control the back button event in jQuery Mobile?

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多