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

如何用栈实现浏览器前进后退

这里先介绍一下栈定义实现,并介绍它一些常用应用,最后再简单实现一个简单浏览器前进后退操作。 栈是一种“操作受限”线性表,只允许一端插入删除数据,特点就是后进先出、先进后出。...目录: 栈实现 栈函数调用中应用 栈表达式求值中应用 栈括号匹配中应用 利用栈实现浏览器前进后退功能 栈实现 栈既可以通过数组实现,也可以通过链表实现。...利用栈实现浏览器前进后退功能 最后一个应用是实现浏览器前进后退功能,这里采用两个栈来解决。...我们使用两个栈,X Y,我们把首次浏览页面依次压入栈 X,当点击后退按钮,再依次从栈 X 中出栈,并将出栈数据依次放入栈 Y。...当我们点击前进按钮,我们依次从栈 Y 中取出数据,放入栈 X 中。当栈 X 中没有数据,那就说明没有页面可以继续后退浏览了。当栈 Y 中没有数据,那就说明没有页面可以点击前进按钮浏览了。

88330

几种方法实现ajax请求内容使用浏览器后退前进功能

我们可以利用ajax进行无刷新改变文档内容,但是没办法去修改URL,即无法实现浏览器前进后退、书签收藏功能。...当只有hash部分发生变化时,浏览器历史记录会产生记录,但不会向服务器发出请求,这时按后退键地址栏uri会变化但页面内容不变。...ie6、7均不支持onhashchange,但可以用setInterval定期检查hash改变,或者onload中检查方法 曾今经典场景:Gmail借助iframhash实现前进后退功能...html5history HTML4,Histroy对象有下面属性方法: length:历史堆栈中记录数。 back():返回上一页。 forward():前进到下一页。...该事件会在调用浏览器前进后退以及执行history.forward、history.back、history.go触发,因为这些操作有一个共性,即修改了历史堆栈的当前指针。

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

locationhash部分使用window.onhashchange实现ajax请求内容使用浏览器后退前进功能

js跨域双向数据传递可以用iframe加上location.hash来实现,研究这个时候深入学习了一下hash特性。  ...当只有hash部分发生变化时,浏览器历史记录会产生记录,但不会向服务器发出请求,这时按后退键地址栏uri会变化但页面内容不变。  ...下面就讲述一下hash结合ajax使用,ajax每次取数据页面更新后浏览器并不产生历史记录,也就是说后退前进按钮失去应用效用,这时可以结合hashwindow.onhashchange来使用,...注意ie6、7均不支持onhashchange,但可以用setInterval定期检查hash改变,或者onload中检查方法。  ...3.使用window.onhashchange检测hash值获取历史数据。

896100

WKWebView详解

(magnification属性)缩放页面内容,并将结果集中指定点上,即以指定点为中心放大 --- 浏览 是否允许水平滑动手势来触发网页前进后退 @property(nonatomic) BOOL...Safari,只是你需要做一些额外适配工作 后退 - (WKNavigation *)goBack; 即在前进后退列表中导航到上一个记录 返回一个新WKNavigation对象 如果没有记录可以后退...,则返回nil 前进 - (WKNavigation *)goForward; 即在前进后退列表中导航到下一个记录 返回一个新WKNavigation对象 如果没有记录可以前进,则返回nil 前进/后退到一个指定记录上...,用来前进后退到最近加载过网页。...; 顺序就是访问顺序 WKBackForwardListItem WKBackForwardListItem对象代表了前进后退记录中一个网页,包含了网页一些信息(URL,标题创建网页URL),

20.2K193

WKWebView

iOS中,加载网页目前有两种控件:UIWebViewWKWebView。...可以使用stopLoading方法来停止页面的加载,使用loading属性来查看是否正在加载。 要允许用户Web历史页面中前进或者后退,要为按钮设置goBack或者goForward动作。...网页视图后退列表,即之前访问过web页面的列表。 canGoBack。布尔值,指示后退列表中是否有可被导航到后退项。 canGoForward。布尔值,指示后退列表中是否有可被导航到前进项。...布尔值,用于确定是否按下连接可以显示链接目标的预览。 - goBack。导航到后退列表中后腿项中。 - goForward。导航到后退列表中前进项中。...导航到后退列表后退项中。 - goForward。导航到后退列表前进项中。 - reload。重新加载当前页面。 - reloadFromOrigin。

5.9K20

IOS WebView控件详解

概述 WebView就是一个内嵌浏览器控件,iOS中主要有两种WebView:UIWebViewWKWebView,UIWebView是iOS2之后开始使用,WKWebViewiOS8开始使用,...其加载数据方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用一种方式,通过一个网页URL来进行加载,这个URL可以是远程可以是本地...,时常会使用到刷新网页、前进后退等导航操作,UIWebView里面也有对应操作方法。...JS执行OC代码 JS是不能执行OC代码,但是可以变相执行,JS可以将要执行操作封装到网络请求里面,然后OC拦截这个请求,获取URL里面的字符串解析即可。...self.view addSubview:webView]; self.webView = webView; webView.delegate = self; } #pragma mark 设置前进后退按钮状态

4.5K80

小程序就是浏览器?

用户界面(User Interface) 工具栏、地址栏、前进/后退按钮、书签菜单、可视化页面加载进度、智能下载处理、首选项、打印 浏览器引擎(Browser Engine) 为渲染引擎提供高级接口...加载URI,支持前进/后退/重新加载 提供当前页面加载进度、JavaScript alert挂钩 允许查询/修改渲染引擎设置 渲染引擎(Rendering Engine) 生成URI可视化表示 解析...、显示HTMLXML文档 计算页面布局 网络(Networking) 实现HTTPFTP等文件传输协议 不同字符集之间进行转换 -解析MIME媒体类型 JavaScript解释器(JavaScript...三端脚本执行环境以及用于渲染非原生组件环境 iOS Android 开发者工具 逻辑层 JavaScriptCore X5 JSCore V8 视图层 WKWebView X5基于Mobile Chrome...小程序主要为了执行JS渲染页面,所以可以删减很多不必要东西,可以视为一个阉割版低配浏览器。

1.2K20

Visual Studio 调试系列4 单步后退来检查旧应用状态(使用使用 IntelliTrace 窗口)

IntelliTrace 后退会在每个断点处及调试器步骤事件发生自动拍摄应用程序快照。 凭借记录快照便可以返回到上一个断点或步骤,并查看当时应用程序状态。...启用事件快照,也默认启用异常发生拍摄快照。 可以取消选中“异常事件发生收集快照”来禁用异常发生拍摄快照 。 启用此功能后,可拍摄未处理异常快照。...02 导航查看快照 1、使用“调试”工具栏中后退”(Alt + [) 前进”(Alt + ]) 按钮事件间进行导航 。 这些按钮用于浏览“诊断工具”窗口中“事件”选项卡上显示事件 。...后退前进到某个事件会自动激活所选事件历史调试。 ? 后退前进,Visual Studio 进入历史调试模式。 在此模式下,调试器上下文将切换到记录所选事件时间。...03 IntelliTrace 后退功能与 IntelliTrace 仅事件模式有何不同 仅事件模式下 IntelliTrace 允许调试器步骤发生断点处激活历史调试。

3K40

Matplotlib 中文用户指南 7.1 交互式导航

以下是工具栏底部每个按钮说明: Home(首页)、Forward(前进Back(后退按钮: 这些类似于 Web 浏览器前进后退按钮。 它们用于之前定义视图之间来回浏览。...它们没有意义,除非你已经使用平移缩放按钮访问了其他地方。 这类似于尝试访问新页面之前单击 Web 浏览器上返回 - 什么都不会发生。 首页总是你第一个浏览页面,以及你数据默认视图。...单击工具栏按钮激活平移缩放,然后将鼠标放在轴域某个地方。 按住鼠标左键并将其拖动到新位置来平移图形。 当你释放它,你按下点处数据将移动到你释放点。...开始缩放鼠标下点会保持静止,你可以缩放图形中其它任意点。 你可以使用快捷键'x','y'或CONTROL分别将缩放约束为x轴,y轴或保留宽高比。 使用极坐标绘图,平移缩放功能行为不同。...可以使用鼠标左键拖动半径轴标签。 可以使用鼠标右键放大和缩小半径刻度。 Zoom-to-rectangle(缩放到矩形)按钮 单击此工具栏按钮激活此模式。 将鼠标放在轴域某处,然后按鼠标左键。

2K20

iOS监听H5页面goBack返回事件 & 网页监听APP返回键 (NavigationBackItemInjection)

截取当前显示屏幕中WKWebView UINavigationBarDelegate NavigationType Disable all the '_blank' target in page's...target WKWebViewWKNavigationDelegate代理方法中处理应用跳转 简单处理WKWebView加载新页面 WKWebView显示JS弹框 WKWebView调用js方法...、https://kunnan.blog.csdn.net/article/details/114832679 方式二:注入监听WebView相关返回类型及方法 1、UIWebViewNavigationTypeBackForward...2、canGoBack:判断当前H5界面是否可以返回方法 3、goBack: 返回上一个界面 4、goForward:可以向前导航到back-forward列表中内容,相当于回到关闭之前看过详情界面...5、 _webView.allowsBackForwardNavigationGestures = YES;允许左滑右滑,默认值为NO;设置为YES后,即可实现左右滑手势操作后退前进 6、WKWebView

5.7K21

实现一个前端路由,如何实现浏览器前进后退

•url 不存在于浏览记录中即为前进前进,往数组里面 push 当前路由。•url 浏览记录末端即为刷新,刷新,不对路由数组做任何操作。...我们使用两个栈,X Y,我们把首次浏览页面依次压入栈 X,当点击后退按钮,再依次从栈 X 中出栈,并将出栈数据依次放入栈 Y。...当我们点击前进按钮,我们依次从栈 Y 中取出数据,放入栈 X 中。当栈 X 中没有数据,那就说明没有页面可以继续后退浏览了。当栈 Y 中没有数据,那就说明没有页面可以点击前进按钮浏览了。...当你通过浏览器后退按钮,从页面 c 后退到页面 a 之后,我们就依次把 c b 从栈 X 中弹出,并且依次放入到栈 Y。这个时候,两个栈数据就是这个样子: ?...各位可以想一下。 其实就是第一个方法代码里面, 添加多一份路由历史纪录数组即可,对这两份历史纪录操作如上面示例图所示即可,也就是对数组增加删除操作而已, 这里就不展开了。

1.5K30

前端路由三种模式原理

如不传该项,即给当前url添加data popstate事件会在点击后退前进按钮(或调用history.back()、history.forward()、history.go()方法)触发。...window.onpopstate history.gohistory.back(包括用户按浏览器历史前进后退按钮)触发,并且页面无刷时候(由于使用pushState修改了history)会触发popstate...事件,事件发生浏览器会从history中取出URL对应state对象替换当前URLhistory.state。...更关键一点是,因为hash发生变化url都会被浏览器记录下来,从而你会发现浏览器前进后退可以用了,同时点击后退,页面字体颜色也会发生变化。...需要额外注意: history api可以分为两大部分,切换修改,参考MDN,切换历史状态包括back、forward、go 三个方法,对应浏览器前进后退,跳转操作: history.go(-

98230

android之WIFI小车编程详述

有了前几篇wifi模块eps8266使用,单片机设置eps8266程序,android TCP客户端,现在就做一个wifi小车 先上图 小车是四个轮子,每个轮子上都有电机驱动,前进后退时候四个轮子同时前进后退...为了达到更好操作效果(一直按下前进,小车前进,按下左右转小车左右转,松开左右转,小车继续前进。松开前进,小车停止。后退同理),单片机程序里加入了前进后退标志位。...,这样子发数据也是为了获得更好操作体验 前进 后退 左转 右转按钮是使用setOnTouchListener方法,以便在按钮按下或松开发送数据, 就看一下前进代码 我在前面声明了一下 //前进,关于...Button forwordButton;//定义前进按钮 Button backButton;//定义后退按钮 Button leftButton;//定义左转按钮...== 1)//上一次按下后退,没松开 { //后退 a1 = 0;//前左轮前进 a2 = 1;//前左轮后退 a3 = 0;//前右轮前进 a4 = 1;//前右轮后进 a5 = 0;/

1.5K90

Vue04路由--SPA+ 使用路由建立多视图单页应用+router-link相关属性+【面试题:js中const,var,let区别】

var声明变量为全局变量,并且会将该变量添加为全局对象属性,但是letconst不会。 4.暂时性死区: 使用let、const命令声明变量之前,该变量都是不可用。...使用var声明变量不存在暂时性死区。 5.初始值设置: 变量声明时,var let 可以不用设置初始值。而const声明变量必须设置初始值。...vue中导航中后退-前进-编程式导航 this.$router.go(-1) :代表着后退 this.$router.go(1):代表着前进 切换到path为/home路由 this....$router.push({ path:'/home' }); 示例一:编程式前进后退按键 1)页面上加入前进后退按钮, foo `        4.5 active-class 设置链接激活使用 CSS 类名    4.6 exact-active-class 配置当链接被精确匹配时候应该激活

2.5K30

ChromePie:单手搞定Chrome

非平板界面上,Chrome不像国产浏览器那样把"前进/后退"等按钮直接显示出来,而是隐藏在菜单中。同时Chrome也不支持手势控制页面前进后退。...激活并打开ChromePie后,我们看到如下界面(这里小苏使用是自己修正过汉化版本,修正版Apk下载链接可以文章末尾看到~):   点击"Pie选项"即可编辑ChromePie菜单,ChromePie...菜单包含主项目子项目,主项目为触发ChromePie显示初始Pie项目,子项目为某Pie项目被选中显示二级项目。   ...我们可以点击主界面的"重启Chrome"来强行停止Chrome进程并启动Chrome,也可以点击界面上方"刷新"按钮强行停止Chrome进程再手动启动Chrome。...,还有一些可选设置,可以根据自己需要选择,其中"使Pie菜单应用网站主题色(需要网站支持)"效果如下(使用羽•浏览器测试,图中打开网页为"IT之家"): 应用下载: 从以下链接下载ChromePie

85530

HTML5 简介(三):利用 History API 无刷新更改地址栏

栈是一种后进先出结构,可以把它想象成一摞盘子,用户每点开一个新网页,都会在上面加一个新盘子,叫「入栈」。用户每次点击「后退按钮都会取走最上面的那个盘子,叫做「出栈」。...", "/profile/"); popstate 事件 当用户点击浏览器前进」、「后退按钮,就会触发popstate事件。...但是如果仅仅这样,地址栏是不会改变,用户无法前进后退,也无法收藏当前页面或者把当前页面分享给他人;搜索引擎抓取也有困难。这时,就可以使用 HTML5 History API 来解决这个问题。...为了处理用户前进后退,我们监听popstate事件。当用户点击前进后退按钮,浏览器地址自动被转换成相应地址,同时popstate事件发生。...最后,整个过程是不会改变页面标题可以通过直接对document.title赋值来更改页面标题。 其他说明 URL 限制 为了安全考虑,新 URL 必须当前 URL 同一个域名下。

2.2K10

iOS中WebKit框架应用与解析 原

二、WebKit框架概览         WebKit框架中涉及类很多,框架设计十分面向对象模块化,开发者使用时可以轻松写出结构清晰代码。...进行使用前,我们首先应该清楚整个框架结构开发思路,下面一张脑图中基本列出了WebKit框架中所涉及到所有重要类以及他们之间相互关系: ?...三、使用WKWebViewConfiguration对WebView进行配置         使用下面的代码可以创建一个WKWebView视图,创建WebView视图,需要使用WKWebViewConfiguration...JavaScript调用方法需要设置代理,不需要需要将代理移除,WKUserContentController中也提供了移除这个代理方法,如果不移除,将会造成WebView不能释放。..., //刷新操作 WKNavigationTypeReload, //重提交操作 例如前进 后退 刷新 WKNavigationTypeFormResubmitted,

1.9K40
领券