vue里监听安卓的物理返回键】的更多相关文章

Hybrid App中,原生内嵌H5单页,由于安卓是有物理返回键的,按安卓物理返回键的时候会返回到上一个路由. 实际中需求是:当有弹层的时候,按物理返回键是关闭弹层,是页面的时候才执行返回上一个路由,所以需要对安卓进行兼容 开始的方案是Android原生重写方法onKeyDown(),H5 JsBridge js去调用方法,当需要的时候屏蔽物理返回键,这种方法也能实现 由于H5单页用的是vue,vue中的路由方法也能实现,并且不需要和APP交互,更加便捷,所以最终决定采用这种方法 只需要写在路由…
在使用html5开发app时,并不能像Android原生那样调取手机自身的方法.而cordova正好弥补了html5这一缺陷. 一,在cordova中文网http://cordova.axuer.com/docs/zh-cn/latest/,搜索"backbutton",如下图: 页面会自动查找backbutton的监听方法. document.addEventListener("backbutton", onBackKeyDown, false); 在回调函数里就…
addEscEvent = function(node){ cc.eventManager.addListener({ event: cc.EventListener.KEYBOARD, onKeyPressed: function(keyCode, event){ cc.hb.uiMgr.openPanel("Hall/alertBox/AlertBox",cc.hb.alertMgr.ANIMATE_CENTENT,"确认退出游戏吗?",function(suc…
当前端页面嵌入到 webview 中运行时,有时会需要监听手机的物理返回按键事件来做一些自定义的操作. 比如我最近遇到的,在一个页面里面有批量选择的功能,当点击手机的返回键时,清除页面上的选中状态.我采取的办法如下: 将 resetChoose 就是点击返回按键时执行的回调,在 React 组件的 constructor 里面挂载到 window 对象下面,注意这里需要绑定this,这样在回调方法 resetChoose 里面可以使用 this.setState 进行注册 作者:张雪飞出处:ht…
1.监听安卓返回键问题 效果:在一级页面按一下返回键提示退出应用,按两下退出应用;在其它页面中,按一下返回上个历史页面 1 2 import mui from './assets/js/mui.min.js' Vue.prototype.$mui = mui; 在一级页面mounted时 1 this.$mui.plusReady( () =>{ 2 var backcount = 0; 3 this.$mui.back = ()=> { 4 if (this.$mui.os.ios) ret…
最近搞Android项目的时候,遇到一个比较蛋疼的需求,需要从Client App调用系统浏览器打开一个页面,进行杂七杂八的一些交互之后,返回到App.如何打开浏览器和如何返回App这里就不说了,有兴趣的童鞋可私下交流. 之所以说这个需求蛋疼,是因为Android有个物理返回键啊……返回键啊……键啊……啊…… 用户按下返回键后,预期应该跟点击页面上的返回键一样——返回App.然而这个返回键的被按下的时候网页完全不知道啊(onbeforeunload不算),找不到直接的办法去监听,愁死我们这全苦逼…
// 往windosw对象中的历史记录注入URL的方法 function addUrl() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } addUrl(); // 每调用一次可以监听返回一次 addUrl(); // 每调用一次可以监听返回一次 addUrl(); // 每调用一次可以监听…
之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上的那个返回按钮的操作了,但是这个物理返回键的监听好像没有直接的办法进行,所以有人就想到了曲线的办法 原理: 页面加载完成时,调用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…
在公共方法文件common.js中实现一个存储当前历史记录的方法 common.js // 存储当前历史记录点,实现控制手机物理返回键的按钮事件 var pushHistory = function () { let state = { title: '', url: '' } window.history.pushState(state, state.title, state.url) } vue页面 mounted () { pushHistory() // 监听历史记录点, 添加返回事件监…
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…
物理返回键指的是手机系统自带的返回按钮,通过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…
代码 第一步创建js文件夹子 在main里面引用   JS文本内容如下 //监听手机物理返回键的事件 document.addEventListener('plusready', function() {     var first = null;     plus.key.addEventListener('backbutton', function() {         if(!first) {             first = new Date().getTime(); //记录第…
mui.back = function(){ return  //禁用物理返回键  也可以写其他逻辑 }…
ok!在安卓手机上,当我们用物理返回键的时候,会以一次性的将程序退出来,这样是很不好的体验,所以就需要使用RN的物理返回键组件:BackAndroid,其原理也就是 分析路由,然后pop()这样! ok!先来说下路由栈吧!,有一点计算机技术基础的同学都应该学过堆栈,其中的栈就是后入先出,也就是RN里面的push(入栈),pop(出栈)! 好的!如图所示! 1:两个路由之间的backandroid else return 直接退出应用 2:在注册组件设置backAndroid(这里注意了,在注册组…
今天遇到一个这样的业务场景:在同一个路由下,只改变路由后面的参数值, 比如在这个页面  /aaa?id=1 ,在这个页面中点击一个按钮后 跳转到 /aaa?id=2 , 但从“/aaa?id=1”到“ /aaa?id=2”是不会触发vue的生命周期的,id变了,但页面数据不会更新, 想要更新只能重新加载页面(手动刷新),但是这多么low.孬呀, 作为一名追求极致用户体验的开发,怎么能容忍这种情况发生: 然后就想办法监听路由参数的变化呀,在watch里监听$route和路由参数,代码如下: wat…
Vue input 监听 使用 v-on:input="change" 实现即可 App.vue <template> <div> <md-field> <label>Initial Value</label> <md-input v-model="initial" v-on:input="change"></md-input> </md-field>…
Vue 事件监听实现导航栏吸顶效果(页面滚动后定位) Howie126313 关注 2017.11.19 15:05* 字数 100 阅读 3154评论 0喜欢 0 所说的吸顶效果就是在页面没有滑动之前,导航栏的效果如下图所示:   当页面向上滑动之后,导航栏始终固定在页面的上方.   具体代码: 写入事件监听,监听滚动条. mounted () { // 事件监听滚动条 window.addEventListener('scroll', this.watchScroll) } 然后在 meth…
详解Vue 如何监听Array的变化:https://www.jb51.net/article/162584.htm…
概述 最近最近做项目的时候总会思考一些大的应用设计模式相关的问题,我把自己的思考记录下来,供以后开发时参考,相信对其他人也有用. 绑定变量 一般情况下,如果我们需要在组件中使用某个变量,会这么使用: data() { return { myData: [], }; } 如果这个变量是外部变量,例如从外部文件引入的话,就会这么使用: import { provinces } from '@/util/consts'; export default { data() { return { myDat…
本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化. 以下实例通过使用 watch 实现计数器: <div id = "app"> <p style = "font-size:25px;">计数器: {{ counter }}</p> <button @click = "counter++" style = "font-size:25px;&…
有兴趣的可以了解下history对象,不感兴趣也可以直接跳到手机物理返回键监听部分 使用场景: 场景1:项目中一个表单页面,需得填写验证码,填写验证码后提交,由于使用的form直接提交,没有使用AJAX,所以,在出现验证码填写错误的时候,就会跳转到错误提示页,3秒倒计时后使用history.back(-1)的方式返回上一页,这也就出现了一个问题,使用history.back(-1)进行后退之后,图形验证码已过期,但是却没有刷新,这样就导致用户重复多次填写验证码,影响用户体验: 场景2:关注公众号…
<?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=…
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…
以前使用的是纯F7,这个项目加了Vue进去,但碰到了一个问题,就是这样监听不到安卓物理键的返回,它是点击返回,直接推出程序,这个坑有点深,查了不少资料也问了不少人,最后在网上看到了别人的写的,自己也改了一点,最后可以返回,但是不能直接退出,坑还是没有爬完:上代码: var XBack = {}; (function(XBack) { XBack.STATE = 'x - back'; XBack.element; XBack.onPopState = function(event) { even…
问题:在项目中,我们常常有需求,当用户在填写表单时,点击返回的时候,我们希望加一个弹窗,确认离开吗,确认将保存为草稿 解决方案:利用 H5的 pushstate(个人理解为增加页面栈)特性与onpopup事件 分析:pushstate 从该方法名我们可以知道 是增加某种状态,会为history对象的length增加长度, 点击返回键的时候会触发onpopup事件(可以联想到 pop其实是数组删除的最后一个元素,符合  ‘栈’ 的思想): onpopup触发返回上一页,而 pushstate仅仅是…
监听路由  watch   $route vue项目中的App.vue 文件 <template> <div id="app"> <!--include=[AdminUserManage,createUser]--> <keep-alive > <router-view/> </keep-alive> <TabBer v-if="tabbarshow"/> </div>…
因为 on-success 上传成功返回的是一个异步的结果....如果父组件需要这个结果的话 必须用watch 监听 然后里面建立一个 save()方法 save方法里面再调用接口 传需要的上传之后的数据,,,,,,…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,…
1.计算属性 https://cn.vuejs.org/v2/guide/computed.html new Vue({ computed:{//定义 show(){ } } }) ++计算属性1.html:++ <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script src="vue.js&…