我的编程空间,编程开发者的网络收藏夹
学习永远不晚

js如何实现点击返回跳转到指定页面

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

js如何实现点击返回跳转到指定页面

这篇文章主要介绍了js如何实现点击返回跳转到指定页面的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js如何实现点击返回跳转到指定页面文章都会有所收获,下面我们一起来看看吧。

功能描述:

在浏览器中新建标签页并指定一个网址,网页加载完毕后,正常流程下是不允许点击返回的。因为当前标签页的相关历史记录是没有的,所以没有记录可以返回。

应客户要求,需要在这种情况下,给他的历史记录里添加一个链接(比如首页),这样在新打开的页面,点击返回就可以跳转到首页,让用户看到系统的各种功能,推广平台。

一、知识要点

HTML5引进了history.pushState()方法和history.replaceState()方法,它们允许你逐条地添加和修改历史记录条目。这些方法可以协同window.onpopstate事件一起工作。

 案例:
假设 http://mozilla.org/foo.html 将执行如下JavaScript代码:

复制代码 代码如下:

 var stateObj = { foo: "bar" }; history.pushState(stateObj, "page 2", "bar.html");

这将让浏览器的地址栏显示http://mozilla.org/bar.html,但不会加载bar.html页面也不会检查bar.html是否存在。

假设现在用户导航到了http://google.com,然后点击了后退按钮,此时,地址栏将会显示http://mozilla.org/bar.html,并且页面会触发popstate事件,该事件中的状态对象(state object)包含stateObj的一个拷贝。该页面看起来像foo.html,尽管页面内容可能在popstate事件中被修改。

如果我们再次点击后退按钮,URL将变回http://mozilla.org/foo.html  文档将触发另一个popstate事件,这次的状态对象为null。回退同样不会改变文档内容。

pushState()方法
pushState()有三个参数:一个状态对象、一个标题(现在会被忽略),一个可选的URL地址。下面来单独考察这三个参数的细节:

状态对象(state object) — 一个JavaScript对象,与用pushState()方法创建的新历史记录条目关联。无论何时用户导航到新创建的状态,popstate事件都会被触发,并且事件对象的state属性都包含历史记录条目的状态对象的拷贝。

任何可序列化的对象都可以被当做状态对象。因为FireFox浏览器会把状态对象保存到用户的硬盘,这样它们就能在用户重启浏览器之后被还原,我们强行限制状态对象的大小为640k。如果你向pushState()方法传递了一个超过该限额的状态对象,该方法会抛出异常。如果你需要存储很大的数据,建议使用sessionStorage或localStorage。

标题(title) — FireFox浏览器目前会忽略该参数,虽然以后可能会用上。考虑到未来可能会对该方法进行修改,传一个空字符串会比较安全。或者,你也可以传入一个简短的标题,标明将要进入的状态。

地址(URL) — 新的历史记录条目的地址。浏览器不会在调用pushState()方法后加载该地址,但之后,可能会试图加载,例如用户重启浏览器。新的URL不一定是绝对路径;如果是相对路径,它将以当前URL为基准;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常。该参数是可选的;不指定的话则为文档当前URL。

注意: 在 Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) 至 Gecko 5.0 (Firefox 5.0 / Thunderbird 5.0 / SeaMonkey 2.2) 中,传入的对象使用JSON来进行序列化。从 Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)开始,对象使用结构化拷贝算法来进行序列化。这将允许更多类型的对象能够安全传入。
某种意义上,调用pushState()有点类似于设置window.location='#foo',它们都会在当前文档内创建和激活新的历史记录条目。但pushState()有自己的优势:

1、新的URL可以是任意的同源URL,与此相反,使用window.location方法时,只有仅修改 hash 才能保证停留在相同的document中。

2、根据个人需要来决定是否修改URL。相反,设置window.location='#foo',只有在当前hash值不是foo时才创建一条新历史记录。

3、你可以在新的历史记录条目中添加抽象数据。如果使用基于hash的方法,你只能把相关数据转码成一个很短的字符串。

注意pushState()方法永远不会触发hashchange事件,即便新的地址只变更了hash。

popstate事件
每当激活的历史记录发生变化时,都会触发popstate事件。如果被激活的历史记录条目是由pushState所创建,或是被replaceState方法影响到的,popstate事件的状态属性将包含历史记录的状态对象的一个拷贝。

replaceState()方法
history.replaceState()操作类似于history.pushState(),不同之处在于replaceState()方法会修改当前历史记录条目而并非创建新的条目。

当你为了响应用户的某些操作,而要更新当前历史记录条目的状态对象或URL时,使用replaceState()方法会特别合适。

 二、实现思路
1.利用popstate事件,监听点击返回事件。

2.触发事件时,判断当前页面的历史记录 是否有页面可以返回。

3.如果没有页面可以返回,则插入两条记录:

1)、指定的跳转页面。

2)、空记录。(使当前页面不发生变化)

 三、实现方法

 //返回之前没页面则返回首页    function pushHistory() {      if (history.length < 2) {        var state = {          title: "index",          url: getHttpPrefix + "index.html"        };        window.history.pushState(state, "index", location.href);        state = {          title: "index",          url: ""        };        window.history.pushState(state, "index", "");      }      //lll("history.state" + history.state)      //console.log(history.state) }

判断当前history中的记录个数,由于页面加载的时候,浏览器会自动push进一个记录。所以要判断长度是否小于2.

塞进的state对象是为了获取对应的url链接。
注意点:
第一个pushState我将跳转url放进state对象 方便跳转操作。第二个参数没有实际意义,因为现在的浏览器基本不适用这个参数。
第三个参数是会替换当前地址栏的链接的,但是页面不会发生跳转。(我之前犯了个错误,将第三个参数设置为首页链接,导致了地址栏更改为首页链接,以至于在当前页的链接 都以首页为基础进行跳转,导致页面的所有链接都跳转错误了。)

  setTimeout(function () {      pushHistory()      window.addEventListener("popstate", function (e) {        lll("popstate"+window.history.state)        if (window.history.state != null && window.history.state.url != "") {          location.href = window.history.state.url        }      });    }, 300);

这段代码放置在页面的ready事件中执行,延迟300毫秒是为了将操作滞后,防止与系统pop事件冲突。
if语句为了判断 history是否存在state对象,因为只有满足我们要求的记录才会有我们添加的state对象 所以 根据这点可以进行页面的跳转操作。这样就可以实现我们想要的效果。

关于“js如何实现点击返回跳转到指定页面”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“js如何实现点击返回跳转到指定页面”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

js如何实现点击返回跳转到指定页面

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

js如何实现点击返回跳转到指定页面

这篇文章主要介绍了js如何实现点击返回跳转到指定页面的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js如何实现点击返回跳转到指定页面文章都会有所收获,下面我们一起来看看吧。功能描述:在浏览器中新建标签页并指定一
2023-07-04

jquery如何实现点击跳转到新页面

本篇内容介绍了“jquery如何实现点击跳转到新页面”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!要实现 jQuery 点击跳转到新页面,我
2023-07-06

html如何实现点击文字跳转到其他页面

HTML中可以使用``标签实现点击文字跳转到其他页面。例如,要将文字“跳转到其他页面”点击后跳转到“other.html”页面,可以使用以下代码:```html跳转到其他页面```其中,`href`属性指定了跳转的目标页面,值为目标页面的网
2023-08-08

jquery怎么实现点击跳转到新页面

jQuery (JQuery JavaScript Library) 是一个使用JavaScript编写的快速、小型、功能丰富的JavaScript库, 使得HTML文档操作、事件处理、动画效果和Ajax交互变得更加简单优雅。在Web开发中,jQuery的应用迅速普及,成为页面交互方面的一个重要工具。其中一个极其常用的功能就是点击跳转到新页面,下面就简单介绍一下该功能的实现方式
2023-05-14

怎么实现javascript跳转到指定页面

JavaScript是一种广泛用于Web页面交互和动态效果的编程语言。在Web开发中,跳转到指定页面是一项常见的任务,通常在用户点击一个链接或按下一个按钮时触发。本文将介绍不同方式的JavaScript跳转到指定页面的方法。1. window.location.hrefwindow.location对象表示当前加载页面的URL。可以使用window.location.href属
2023-05-14

php如何实现点击按钮跳转页面

要实现点击按钮跳转页面,可以使用PHP结合HTML的方式。首先,在HTML中添加一个按钮:```点击跳转```然后,将上述代码保存为一个HTML文件,例如 `index.html`。接下来,使用PHP创建一个处理跳转的文件,例如 `jump
2023-08-25

javascript如何实现点击按钮跳转页面

这篇文章主要介绍了javascript如何实现点击按钮跳转页面,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript有什么特点1、js属于一种解释性脚本语言;2、
2023-06-14

php如何实现点击按钮后跳转页面

本篇内容主要讲解“php如何实现点击按钮后跳转页面”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现点击按钮后跳转页面”吧!方法一: 使用HTML中的表单可以在HTML表单中使用sub
2023-07-05

php如何自动跳转到指定页面

小编给大家分享一下php如何自动跳转到指定页面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在php中,可以利用header()函数来自动跳转到指定页面;只需要在
2023-06-14

PHP页面跳转教程:如何实现页面跳转到新页面

标题:PHP页面跳转教程:如何实现页面跳转到新页面,需要具体代码示例在Web开发中,页面跳转是一个常见的操作,通过页面跳转可以实现用户在不同页面间进行流畅的切换,提升用户体验和网站功能的完整性。PHP作为一种流行的服务器端脚本语言,提供了
PHP页面跳转教程:如何实现页面跳转到新页面
2024-03-04

如何在PHP中实现跳转到指定页面的功能

标题:PHP实现跳转页面功能的具体代码示例在web开发中,经常需要实现页面跳转的功能,PHP作为一门流行的服务器端编程语言,提供了多种方式来实现页面的跳转。本文将介绍在PHP中如何实现跳转到指定页面的功能,同时提供具体的代码示例。一、h
如何在PHP中实现跳转到指定页面的功能
2024-03-08

如何使用Html5跳转到APP指定页面

这篇文章主要介绍如何使用Html5跳转到APP指定页面,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.设置urlschemesurlschemes尽量设一个唯一的字符串,例如可以设为:iOS+公司英文名+ 项目工程
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录