js屏蔽手机的物理返回键】的更多相关文章

$(document).ready(function() { if (window.history && window.history.pushState) { $(window).on('popstate', function () { window.history.pushState('forward', null, '#'); window.history.forward(1); }); } window.history.pushState('forward', null, '#')…
ok!在安卓手机上,当我们用物理返回键的时候,会以一次性的将程序退出来,这样是很不好的体验,所以就需要使用RN的物理返回键组件:BackAndroid,其原理也就是 分析路由,然后pop()这样! ok!先来说下路由栈吧!,有一点计算机技术基础的同学都应该学过堆栈,其中的栈就是后入先出,也就是RN里面的push(入栈),pop(出栈)! 好的!如图所示! 1:两个路由之间的backandroid else return 直接退出应用 2:在注册组件设置backAndroid(这里注意了,在注册组…
有兴趣的可以了解下history对象,不感兴趣也可以直接跳到手机物理返回键监听部分 使用场景: 场景1:项目中一个表单页面,需得填写验证码,填写验证码后提交,由于使用的form直接提交,没有使用AJAX,所以,在出现验证码填写错误的时候,就会跳转到错误提示页,3秒倒计时后使用history.back(-1)的方式返回上一页,这也就出现了一个问题,使用history.back(-1)进行后退之后,图形验证码已过期,但是却没有刷新,这样就导致用户重复多次填写验证码,影响用户体验: 场景2:关注公众号…
之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上的那个返回按钮的操作了,但是这个物理返回键的监听好像没有直接的办法进行,所以有人就想到了曲线的办法 原理: 页面加载完成时,调用history.pushState写入一个指定状态STATE,并监听window.onpopstate: 当onpopstate被触发时,检查event.state是否等于…
JavaScript没有监听物理返回键的API,所以只能使用 popstate 事件监听. 有两个解决办法: 1.返回到指定的页面 pushHistory(); window.addEventListener("popstate", function(e) { window.location = 'http://www.baidu.com'; }, false); function pushHistory() { var state = { title: "title&quo…
代码 第一步创建js文件夹子 在main里面引用   JS文本内容如下 //监听手机物理返回键的事件 document.addEventListener('plusready', function() {     var first = null;     plus.key.addEventListener('backbutton', function() {         if(!first) {             first = new Date().getTime(); //记录第…
preventBack: function(theurl){ var pushState = window.history.pushState; //点击物理返回键时,退出到跳转定义首页 if(pushState){ window.history.pushState({a: Math.random()},'', location.href); window.addEventListener('popstate', function(){ var type = typeof(theurl); ty…
mui.back = function(){ return  //禁用物理返回键  也可以写其他逻辑 }…
Hybrid App中,原生内嵌H5单页,由于安卓是有物理返回键的,按安卓物理返回键的时候会返回到上一个路由. 实际中需求是:当有弹层的时候,按物理返回键是关闭弹层,是页面的时候才执行返回上一个路由,所以需要对安卓进行兼容 开始的方案是Android原生重写方法onKeyDown(),H5 JsBridge js去调用方法,当需要的时候屏蔽物理返回键,这种方法也能实现 由于H5单页用的是vue,vue中的路由方法也能实现,并且不需要和APP交互,更加便捷,所以最终决定采用这种方法 只需要写在路由…
物理返回键指的是手机系统自带的返回按钮,通过cordova监听返回按钮操作,可以禁止某些页面的返回操作,以及实现点击两次返回按钮退出应用. var pageUrl = window.location.href; var n = pageUrl.lastIndexOf('?'); var m = pageUrl.lastIndexOf('/'); var str = pageUrl.substring(m+1,n); //获取pageName var exitAppTicker = 0; docu…
A → B 使用 navigator 导航,用 goBack() 返回的时候传递参数 在 A 页面 this.props.navigation.navigate("B", { callBack: (data) => { //回调函数 this.setState({ studentCount: data }) } }); 在 B 页面 onPress()=>{ this.props.navigation.state.params.callBack(data) this.pro…
<?xml version="1.0" encoding="utf-8"?> <!-- 定义当前布局的基本LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height=…
实现:Activity中放置webview,跳转到h5界面,点击返回键,不退出h5界面,而是返回上一个h5界面 /** * 改写物理按键--返回的逻辑,希望浏览的网页后退而不是退出浏览器 * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (keyCod…
一直使用iPhone作为测试机开发,提交给测试同事Android版本后发现很多适配问题,其中一个非常明显的是,弹出一个modal后,点击Android的返回键,modal不会消失,直接navigation goBack了在Android端需要处理物理按键事件 , 另外可以实现连续两次点击退出APP的功能 componentDidMount(): void { //挂载完,添加返回按键的监听 BackHandler.addEventListener('hardwareBackPress', thi…
$(document).ready(function() { if (window.history && window.history.pushState) { $(window).on('popstate', function () { window.history.pushState('forward', null, '#');  window.history.forward(1); }); } window.history.pushState('forward', null, '#'…
pushHistory(); window.addEventListener("popstate", function(e) { window.location = data.info.advert.link(要跳转的页面地址)); }, false); function pushHistory(){ var state = { title: "title", url: "#" }; window.history.pushState(state,…
1.打开弹窗调用 window.history.pishState() 函数 2.关闭弹框 3.mounted 生命周期 监听popstate 事件 4.beforeDestroy 生命周期 移除popstate 事件 个人觉得这种方法虽然实现了效果,但并不完美,比较繁琐.希望有好建议的留言!…
pushHistory();        window.addEventListener("popstate", function (e) {            if (orderid != "") {                window.location.href = "/wap/self/orderinfo.aspx?id=" + orderid; //此处可改为任意地址            } else {         …
以前使用的是纯F7,这个项目加了Vue进去,但碰到了一个问题,就是这样监听不到安卓物理键的返回,它是点击返回,直接推出程序,这个坑有点深,查了不少资料也问了不少人,最后在网上看到了别人的写的,自己也改了一点,最后可以返回,但是不能直接退出,坑还是没有爬完:上代码: var XBack = {}; (function(XBack) { XBack.STATE = 'x - back'; XBack.element; XBack.onPopState = function(event) { even…
做微信项目的时候,发现在Ios微信浏览器左上角有个返回按钮,但是点击返回时不稳定,跳到不该跳的页面.网上搜了一个捕获返回事件的JS代码,记录下来,便于以后查看. <span style="white-space:pre">        </span>//监听浏览器或手机返回按钮事件 $(function() { pushHistory(); window.addEventListener("popstate", function(e) {…
基本用法 根据文档,安卓back键的处理主要就是一个事件监听: BackAndroid.addEventListener('hardwareBackPress', this.onBackPressed); BackAndroid.removeEventListener('hardwareBackPress', this.onBackPressed); 在starter-kit里,我们在App这一级别,实现了按back键回退导航栈的功能: class App extends React.Compo…
在js中,加上一下代码: window.onpageshow = function(event) {if (event.persisted) {window.location.reload();}};…
componentWillMount(){    BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid); } componentWillUnmount() {    BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid); } componentDidMount() {   console.log("当前路由")…
例如提交订单成功跳到了订单详情页面,再返回就又到了提交订单支付页面 我们需要返回到其他页面 1.挂载完成后,判断浏览器是否支持popstate mounted(){ if (window.history && window.history.pushState) { history.pushState(null, null, document.URL); window.addEventListener('popstate', this.goBack, false); } }, 2.页面销毁时…
1.引入组件 import { BackHandler, } from 'react-native'; 2.添加监听 componentDidMount(): void { BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPressAndroid); } 3.监听方法 onBackButtonPressAndroid = () => { if (this.props.navigation.isFocused()…
方法一. $(function(){ pushHistory(); window.addEventListener(“popstate”, function(e) { window.location = 返回的地址 }, false); function pushHistory() { var state = { title: “title”, url: “#” }; window.history.pushState(state, “title”, “#”); } }); 方法二.JS监听手机的…
当前端页面嵌入到 webview 中运行时,有时会需要监听手机的物理返回按键事件来做一些自定义的操作. 比如我最近遇到的,在一个页面里面有批量选择的功能,当点击手机的返回键时,清除页面上的选中状态.我采取的办法如下: 将 resetChoose 就是点击返回按键时执行的回调,在 React 组件的 constructor 里面挂载到 window 对象下面,注意这里需要绑定this,这样在回调方法 resetChoose 里面可以使用 this.setState 进行注册 作者:张雪飞出处:ht…
提供两种解决方法吧,都是网上来的,侵权删,毕竟我等只是搞后端的-- 第一种方法: // 阻止安卓实体键后退 // 页面载入时使用pushState插入一条历史记录 history.pushState(null, null, '#' ); window.addEventListener('popstate', function(event) { // 点击回退时再向历史记录插入一条,以便阻止下一次点击回退 history.pushState(null, null, '#' ); });  第二种直…
最近开发vue项目,遇到的一些问题,这里整合一下,看到一些博客已经有写相关知识,然后自己再次记录一下. 这是关于vue路由相关比较常见的问题,以后遇到相关路由的问题,会不断更新这篇博客. 需求1:从填写表单A页面跳转到B页面,然后再从B页面返回到A页面,实现A页面的所填的数据保留 一.设置路由缓存: 1.App.vue中加入<keep-alive>  具体代码如下: <template> <div id="app"> <!--<img s…
1.前言 如今h5新特性.新标签.新规范等有很多,而且正在不断完善中,各大浏览器商对它们的支持,也是相当给力.作为前端程序员,我觉得我们还是有必要积极关注并勇敢地加以实践.接下来我将和各位分享一个特别好用的h5新特性(目前也不是特别新),轻松监听任何App自带的返回键,包括安卓机里的物理返回键,从而实现项目开发中进一步的需求. 2.起因 大概半年前接到pm一需求,用纯h5实现多audio的播放.暂停.续播,页面放至驾考宝典App中,与客户端没有任何的交互,所以与客户端相关的js不需要引用.看上去…