首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js监听手机端点击物理返回键或js监听pc端点击浏览器返回键

之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上的那个返回按钮的操作了...; 当onpopstate被触发时,检查event.state是否等于STATE,如果相等,表示页面发生了后退(按下返回键或者浏览器的后退按钮),则把这次行为当作是返回键被按下了(把点击浏览器的后退按钮也误算进来了...,这时候你就需要再上次那个操作完之后再使用histroy.pushState再写入一次之前写入的那个状态,这样下次会继续监听那个物理返回键,否则下次你再点击那个返回键的话,就会直接返回浏览器的栈的上一级...不过这个方法有些缺陷: 如果项目本身使用了pushState,则历史记录会有瑕疵(多了一个历史); 浏览器的后退按钮点击以及调用history.back()也会被当成按下了返回键。...举个例子: 我在vue的项目中引入xback.js js/xback.js" @load="load_xback">  关于上面在

9.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android必知必会-Fragment监听返回键事件

    如果移动端访问不佳,请尝试 Github版<–点击左侧 背景 项目要求用户注册成功后进入修改个人资料的页面,且不允许返回到上一个页面,资料修改完成后结束当前页面,进入APP主页。...由于是使用多个Fragment完成注册流程,就需要Fragment监听用户点击手机上的返回按钮,查了一些资料,加上自己使用过程中发现的问题,特此记录,帮助更多有此需求的朋友 代码实现 XXX_Fragment...); } 以上代码是stackoverflow.com中找到的一个解决方案,但是在使用时,由于Fragment页面里可能有其他能获取焦点的View(例如EditText),会导致监听失效,点击返回键会返回到上个页面...imm.hideSoftInputFromWindow(nickname.getWindowToken(), 0); //使得根View重新获取焦点,以监听返回键...details/45176665 http://stackoverflow.com/questions/22552958/handling-back-press-when-using-fragments-in-android

    1.9K50

    Android 双击返回键退出程序的3种写法~

    ---- 记得去年曾经让LZ写一个连续点击返回键俩次退出程序,,,憋了好久没憋出来。。。23333。。。 下面先说说LZ思路,具体如下: 1....第二种就是使用android中计时器(**Timer**)。 其实这俩种都差不多.思路是有了,,,接下来要怎么开搞呢???用户点击肯定会触发相应的事件,,,我们先来看下面俩个事件的作用。。。...One Way:onKeyUp() //记录用户首次点击返回键的时间 private long firstTime=0; @Override public boolean...Two Way:onKeyDown() //记录用户首次点击返回键的时间 private long firstTime=0; @Override public boolean...run() { isExit=false;//取消退出 } },2000);// 如果2秒钟内没有按下返回键

    1.7K20

    flutter 返回键监听

    本篇为继上片监听返回键基础下优化: 以下做返回键监听两种情况: import 'package:fluttertoast/fluttertoast.dart'; //提示第三方插件 1....单击提示双击退出,双击时退出App DateTime _lastPressedAt; //上次点击时间 main.dart-MyApp中: home: WillPopScope( // 监听返回键Widget...  onWillPop: () async { // 点击返回键即触发该事件     if (_lastPressedAt == null) { //首次点击提示...信息       Fluttertoast.showToast...单击返回手机桌面,不退出App main.dart文件 import 'package:flutter_smart_park/untils/android_back_desktop.dart'; home...  static Future backDeskTop() async {     final platform = MethodChannel(CHANNEL);     //通知安卓返回

    4.1K20
    领券