当你开发的程序被按后退键退出的时候, 你肯定不想让他就这么被finish()吧,那么就想把程序退置到后台就可。...(类似于PC端,你关闭一个浏览器和你最小化一个浏览器的区别) 参看方法:public boolean moveTaskToBack(boolean nonRoot) 参数是一个布尔值 1、false,仅当...activity为task根(即首个activity例如启动activity之类的)时才生效 2、true,无论什么时候都会生效,忽略上述条件 注意:此方法不会改变task中的activity中的顺序,...onCreate() --------------------------------------------------------------------------------------- 例如: 在根...Activity中重写后退按钮响应事件,当按后退按钮的时候把Activity退置到后台 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent
用户每次点击「后退」按钮都会取走最上面的那个盘子,叫做「出栈」。而每次浏览器显示的自然是最顶端的盘子的内容。...执行pushState函数之后,会往浏览器的历史记录中添加一条新记录,同时改变地址栏的地址内容。它可以接收三个参数,按顺序分别为: 一个对象或者字符串,用于描述新记录的一些特性。...这个参数会被一并添加到历史记录中,以供以后使用。这个参数是开发者根据自己的需要自由给出的。 一个字符串,代表新页面的标题。当前基本上所有浏览器都会忽略这个参数。 一个字符串,代表新页面的相对地址。...「前进」、「后退」按钮时,就会触发popstate事件。...为了处理用户前进、后退,我们监听popstate事件。当用户点击前进或后退按钮时,浏览器地址自动被转换成相应的地址,同时popstate事件发生。
网页如何防止刷新重复提交与如何防止后退的解决方法 提交后禁用提交按钮(大部分人都是这样做的) 如果客户提交后,按F5刷新怎么办?...点击后退按钮,再点击后退按钮,你可以看到这时打开的是本页面之前的页面!(当然,这是在你的客户端启用了JavaScript功能的条件下。) 如果客户按后退,怎么办?...本文介绍网络上可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适用场合。 一、概述 曾经有许多人问起,“怎样才能‘禁用’浏览器的后退按钮?”...,或者“怎样才能防止用户点击后退按钮返回以前浏览过的页面?”在ASP论坛上,这个问题也是问得最多的问题之一。遗憾的是,答案非常简单:我们无法禁用浏览器的后退按钮。 ...由于浏览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否应该允许用户打开这个页面。
window 对象在浏览器中有两重身份,一个是 ECMAScript 中的 Global 对象,另一个就是浏览器窗口的 JavaScript 接口。...# 导航与打开新窗口 window.open()可以用于导航到指定URL,也可以用于打开新浏览器窗口 接收四个参数:要加载的URL、目标窗口、特性字符串和表示新窗口在浏览器历史记录中是否代替当前加载页面的布尔值...(字符串或函数),以及把下一次执行定时代码的任务添加到队列要等待的时间(毫秒) 返回一个循环定时 ID,可以用于在未来某个时间点上取消循环定时。...此时单击“后退”按钮,就会触发 window 对象上的 popstate 事件 popstate 事件的事件对象有一个 state 属性,其中包含通过 pushState()第一个参数传入的 state...对象 点击“后退”按钮直到返回最初页面时, event.state 会为 null 可以通过 history.state 获取当前的状态对象,也可以使用replaceState()并传入与pushState
表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次。 点击刷新按钮。...使用浏览器后退按钮重复之前的操作,导致重复提交表单。 使用浏览器历史记录重复提交表单。 浏览器重复的HTTP请求。 几种防止表单重复提交的方法 1.禁掉提交按钮。...这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。 3.在session中存放一个特殊标志。...当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。 ...如果发现表单提交里没有有效的标志串,这说明表单已经被提交过了,忽略这次提交。 这使你的web应用有了更高级的XSRF保护。 4.在数据库里添加约束。
上一节我们说地址栏跳转的时候,谈到了浏览器会缓存用户访问url序列,我们可以通过浏览器的前进后退按钮或者通过js提供的方法,访问这个序列里的url,不过关于这一点上一节我们只说了window.history.go...window.history.back() 这个方法的作用为返回上一页,相当于浏览器的后退按钮,和window.history.go(-1)达成的效果是一样的。...,它只会将目标url添加到序列中,并且出现在地址栏中,但并不会立即加载并跳转到这个页面,但如果你访问了新的页面,点击返回按钮的时候,或者在当前页面刷新时,浏览器就会加载并跳转到你新添加的这个url。...打开任意网页,在控制栏输入下面的代码,看看地址栏发生了什么变化,这时候页面是不是没有发生变化,然后你再点击刷新按钮试一下 history.pushState({}, 'title', '/user')...popstate popstate类似于一个事件函数,当用户在浏览器点击后退、前进,或者在js中调用histroy.back(),history.go(),history.forward()等,会触发popstate
以下是工具栏底部的每个按钮的说明: Home(首页)、Forward(前进)和Back(后退)按钮: 这些类似于 Web 浏览器的前进和后退按钮。 它们用于在之前定义的视图之间来回浏览。...它们没有意义,除非你已经使用平移和缩放按钮访问了其他地方。 这类似于尝试在访问新页面之前单击 Web 浏览器上的返回 - 什么都不会发生。 首页总是你第一个浏览的页面,以及你的数据的默认视图。...如果在平移时按'x'或'y',移动会分别限制在x或y轴。 按鼠标右键并将其拖动到新位置来进行缩放。 向右移动使x轴成比例放大,或者向左移动成比例缩小。 y轴和上/下移动同上。...+ w 将平移/缩放限制于x轴 使用鼠标平移/缩放时按住x 将平移/缩放限制于y轴 使用鼠标平移/缩放时按住y 保留宽高比 使用鼠标平移/缩放时按住CONTROL 切换网格 鼠标在轴域上时按下g 切换...x轴刻度(对数/线性) 鼠标在轴域上时按下L或k 切换y轴刻度(对数/线性) 鼠标在轴域上时按下l 如果你使用matplotlib.pyplot,则会为每个图形自动创建工具栏。
使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置,故而又称之为锚点。...onclick="push('/c')">/c let container = document.getElementById('root'); //监听弹出状态的事件 浏览器上的后退按钮...属性上 浏览器的前进按钮 window.onpushstate = function(state,title,url) { container.innerHTML = state.to...window.history对象,该对象上包含有length和state的两个值,在它的__proto__上继承有back、forward、go等几个功能函数 在popstate之前,我们可以利用back...使用方法: history.pushState(data,title,url); //其中第一个参数data是给state的值;第二个参数title为页面的标题,但当前所有浏览器都忽略这个参数,传个空字符串就好
,所以当刷新浏览器时js会重新执行,当前页面的内容便会丢失;页面跳转时浏览器不会向服务器发出新的页面请求,浏览器也就无法前进、后退页面。 ...(); // 前进一页history.back(); // 后退一页 在H5规范中引入了三个新的API, // 按指定的名称和URL(如果提供该参数)将数据...push进会话历史栈history.pushState();// 按指定的数据,名称和URL(如果提供该参数),更新历史栈上最新的入口history.replaceState();// 返回当前状态对象...然而调用history.pushState()/history.replaceState()不会触发popstate事件,只有在做出浏览器动作时,才会触发该事件,比如用户点击浏览器的回退/前进按钮,或者在...在单页应用中能改变URL的操作其实可以归为以下几种: 1. 点击浏览器的前进或后退按钮; 2. 点击 a 标签; 3.
# 前端路由实现方法 路由需要实现以下功能: 当浏览器地址变化时,切换页面; 点击浏览器【后退】、【前进】按钮时,网页内容跟随变化; 刷新浏览器,网页加载当前路由对应的内容。...,此时按下回车,浏览器发送 https://cellinlab.xyz/ 请求到服务器,请求完毕之后设置散列值为 #/home,此时触发 onhashchange 事件 当值改变浏览器地址栏 URL 的哈希部分...,按下回车,浏览器不会发送任何请求到服务器,只是设置散列值修改,并触发 onhashchange 事件 html 中 标签的属性 href 可以设置为页面的元素 ID 如 #top,当点击链接时页面跳转到该...,但允许在地址之间跳转 浏览器工具栏的 “前进” 和 “后退” 按钮,其实就是对 History 对象进行操作 # 属性 History 对象主要有两个属性: History.length 当前窗口访问过的页面数量...popstate() 每当 History 对象出现变化时,就会触发 popstate 事件 仅仅调用 pushState() 方法或 replaceState() 方法,并不会触发该事件 只有用户点击浏览器倒退按钮或前进按钮
之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上的那个返回按钮的操作了...,但是这个物理返回键的监听好像没有直接的办法进行,所以有人就想到了曲线的办法 原理: 页面加载完成时,调用history.pushState写入一个指定状态STATE,并监听window.onpopstate...; 当onpopstate被触发时,检查event.state是否等于STATE,如果相等,表示页面发生了后退(按下返回键或者浏览器的后退按钮),则把这次行为当作是返回键被按下了(把点击浏览器的后退按钮也误算进来了...不过这个方法有些缺陷: 如果项目本身使用了pushState,则历史记录会有瑕疵(多了一个历史); 浏览器的后退按钮点击以及调用history.back()也会被当成按下了返回键。...举个例子: 我在vue的项目中引入xback.js 关于上面在
点击浏览器的后退和前进按钮,浏览器会前后浏览您浏览过的网页的历史记录。 Angular路由器借鉴了这种模式。 它可以将浏览器URL解释为导航到客户端生成视图的指令。...当用户点击按钮,从下拉框中选择,或者响应来自任何来源的其他刺激时,您都可以进行命令式导航。并且路由器在浏览器的历史记录中记录活动,所以后退和前进按钮也起作用。...如果您点击了浏览器的后退按钮而不是“返回”按钮,该应用程序也会将您返回到英雄列表。 Angular的应用程序像正常的网页导航一样更新浏览器的历史。 现在点击危机中心链接查看正在进行的危机列表。 ?...与英雄细节不同,当您键入更新时,危机细节更改是暂时的,直到您通过按下“Save”或“Cancel”按钮保存或放弃它们。 这两个按钮都回到危机中心及其危机列表。 不要单击任一按钮。...点击浏览器后退按钮或“英雄”链接。 向上弹出一个对话框。 ? 您可以选择“OK”并丢失您的更改,或单击“Cancel”并继续编辑。 这种行为的后面是路由的routerCanDeactivate挂钩。
addEventListener添加事件监听时不传第三个参数时, 默认为冒泡流 addEventListener的第三个参数是useCapture, 传入true时采用事件捕获 localStorage...MacIntel" history history对象是用来处理历史记录的 history.length // 历史列表中的 url 数量 history.back() // 相当于点击后退按钮...history.forward() // 相当于点前进 history.go(-2) // 相当于点击两次后退按钮 /* * 三个参数依次为: state, title, url...不需要则可以传null * title: 新页面的标题,但是所有浏览器目前都忽略这个值, 故可以传null (可以设置document.title代替) * url: 新的网址,必须与当前页面处在同一个域..., */ history.pushState(null, 'title', '/profile') // 用户点击前进或后退按钮时会触发window的popstate事件 window.addEventListener
开头 查询字符串参数 尽管 location.search 返回从问号到 URL 末尾的所有内容,但却没有办法逐个访问其中的每个查询字符串参数。...当通过上述任何一种方式修改 URL 之后,浏览器的历史记录中就会生成一条新记录,因此用户通过单击”后退”按钮都会导航到前一个页面。 要禁用这种行为,可以使用 replace() 方法。...如果调用 reload() 时不传递任何参数,页面就会以最有效的方式重新加载。如果要强制从服务器重新加载,则需要像下面这样为该方法传递参数 true。...这个方法接受一个参数,表示向后或向前跳转的页面数的一个整数值。负数表示向后跳转(类似于单击浏览器的”后退”按钮),正数表示向前跳转(类似于单击浏览器的”前进”按钮)。...顾名思义,这两个方法可以模仿浏览器的”后退”和”前进”按钮。 除了上述几个方法外,history 对象还有一个 length 属性,保存着历史记录的数量。
学习ajax、fetch、axios时,发送网络请求携带参数时,都需要分别处理get和post的参数。所以我们需要学习get和post的区别,以便更好地进行前后端数据交互。...一、GET 和 POST的区别 GET POST 后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。...历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。 对数据长度的限制 是的。...在发送密码或其他敏感信息时绝不要使用 GET ! POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 可见性 数据在 URL 中对所有人都是可见的。...它们的作用分别为: GET:从服务器上获取数据,仅仅查询服务器上的数据,不进行修改。 POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。
如不传该项,即给当前url添加data popstate事件会在点击后退、前进按钮(或调用history.back()、history.forward()、history.go()方法)时触发。...window.onpopstate history.go和history.back(包括用户按浏览器历史前进后退按钮)触发,并且页面无刷的时候(由于使用pushState修改了history)会触发popstate...事件,事件发生时浏览器会从history中取出URL和对应的state对象替换当前的URL和history.state。...Hash模式 hash模式背后的原理是onhashchange事件,可以在window对象上监听这个事件: window.onhashchange = function(event){ /...更关键的一点是,因为hash发生变化的url都会被浏览器记录下来,从而你会发现浏览器的前进后退都可以用了,同时点击后退时,页面字体颜色也会发生变化。
太糟糕了,因为单击浏览器的“后退”和“前进”按钮与浏览历史记录中的 URL 导航有关。如果没有 History API,就无法谈论路由。...history.back() 与 history.go(-1) 相同,或者当用户在浏览器中单击 Back 按钮时。你可以用任何一种方法达到相同的效果。...当用户按下浏览器的 Forward 按钮时,将执行 history.forward(),它等效于 history.go(1)”。...这就是使浏览器无需重新加载页面即可更改 URL 的原因。 结果:现在,每次我们单击按钮时,URL 实际上都会在浏览器的地址栏中更改。内容框也会更新。 ? 我们的原生 JS 路由开始运行了。...假定每次你导航到出现在路由按钮上的 URL 时,实际上都会从服务器单独加载该 URL。 因此你有责任确保/page/about 将路由器和页面的加载到应用程序的根视图中。
对象的方法go() (1)、当传入参数为num时 history.go(-1);//加载前第一个URL history.go(-2);//加载前第二个URL history.go(1);//加载下第一个...但是他会出现一个很严重的问题(由于页面没有重新加载,浏览器URL历史中在每次下一页后是不会新添加的URL,因为只是局部刷新,所以不会添加新的URL,这就导致了,浏览器的返回上一页功能不能使用),pushState...()方法就提供了我们点击分页,添加一个新的参数不同得URL在历史列表中。...、后退按钮的行为,window.onpopstate就是解决这个问题的。...调用history.pushState()或者history.replaceState()不会触发popstate事件. popstate事件只会在浏览器某些行为下触发, 比如点击后退、前进按钮(或者在
所以理论上我们可以在脚本中忽略它,但是我们必须根据实际情况来选择是否忽略。因此如果忽略,我们就可以选择此项,只录制产生动态数据的HTTP请求。...2.3开始录制 1.全部配置好以后,在【HTTP代理控制器】中按下【启动】。然后子啊浏览器中浏览Web页面(你要测试的功能),就可以录制下这些HTTP请求。...录制状态下的“启动”按钮是灰色的不可以点击,非录制状态下的“启动”按钮可以点击。 2.在录制时每个js、png、swf及动态请求(需要服务器动态取数据)都会录制下来。...此时开始录制脚本,在浏览器中输入要访问的网址,进行相关操作。这里以度娘为例,录制访问度娘,然后查询:北京-宏哥的脚本。...8.在浏览器输入度娘网址后,进入度娘后,输入框输入:北京-宏哥,点击查询。查看Jmeter线程组下的录制控制器是否已经有请求产生。若产生请求,录制脚本成功。
所以理论上我们可以在脚本中忽略它,但是我们必须根据实际情况来选择是否忽略。因此如果忽略,我们就可以选择此项,只录制产生动态数据的HTTP请求。...2.3开始录制 1.全部配置好以后,在【HTTP代理控制器】中按下【启动】。然后子啊浏览器中浏览Web页面(你要测试的功能),就可以录制下这些HTTP请求。...录制状态下的“启动”按钮是灰色的不可以点击,非录制状态下的“启动”按钮可以点击。 2.在录制时每个js、png、swf及动态请求(需要服务器动态取数据)都会录制下来。...此时开始录制脚本,在浏览器中输入要访问的网址,进行相关操作。这里以度娘为例,录制访问度娘,然后查询:北京-宏哥的脚本。...9.录制成功后,请求中也会记录发送的信息,如服务器名称、端口号、路径、和请求时的参数等,如下图所示: ?
领取专属 10元无门槛券
手把手带您无忧上云