问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

点击链接页面跳转,跳到另一个画面,返回后原页面还保持原样(有js点击效果)如何实现说下思路,有代码最

发布网友 发布时间:2022-05-12 06:00

我来回答

3个回答

懂视网 时间:2022-05-12 10:21

比如在页面A中点开了一个折叠列表(用jquery做的),并且向下拖动了一点滚动条,然后通过列表中的某个按钮跳转到了页面B,B页面中有一个goback按钮,点击一下就能跳回页面A,跳回页面A时,滚动条保持在之前离开时的状态,并且之前打开的那个折叠列表也要是保持打开的。有哪些html5 API或jquery API可以实现吗?
ps:我试了jquery 中的history.back(),可以实现滚动条位置不变,但是折叠列表变成了初始状态(也就是说和刷新了页面一样)。

回复内容:

谢邀。

实在太巧,三四天前我刚好做过这个效果。

页面分为两个,一个是列表页:
一个是内容页:

先说列表页:

你可以观察到我在列表页展开时是带有锚的,当列表页加载时,若 JS 检测到 URL 上有锚,展开对应的折叠列表;若 URL 上没有锚的时候,就展开第一个,并且滚动条不滚动。

当点击折叠列表的 panel-heading 时,使用 history.pushState(null, null, url) ,改变 URL 上的锚,并展开该折叠列表以及滚动到该折叠列表的顶部。
然后说一下内容页里的「返回」:
首先需要判断一下入口链接是什么,使用 document.referrer 即可。
然后可能出现以下两种情况:
1、用户是从你的折叠列表进入该内容页的,那么你可以使用 history.back(),这时之前使用 history.pushState() 改变的锚还保留,而且会自动展开并滚动到这个锚所对应的折叠列表。
2、用户是直接在地址栏输入链接进入的,此时你可以直接用 location.href = url 将它跳转到它的上一级链接中。
具体的效果你可以来我们网站看:计蒜客 - 让学习更有味,要进入内容页需要登录才行~ 你这种需求比较适合使用 URL 来保存状态,然后使用 URL 来进行事件驱动。这样的好处在于将各个页面的状态保存在各自的 URL 里,不管是使用浏览器的前进后退还是将当前链接分享给他人,都不会丢失页面状态。
驱动过程分为以下几步:
修改 URL (trigger) -> 解析 URL -> 调用对应的回调 (listener)
其中:

  • 为了不引发界面刷新,修改 URL 时需要使用 URL hash 或者 history.pushState()。

  • 注册 listener、解析 URL 和调用 listener 可以交给前端路由。(自己年轻的时候也造过一个前端路由的轮子 PRouter.js。(逃

  • 当然如果不希望把一些状态保存在 URL 里,那也可以保存在 localStorage 里。但不变的是一定要用状态来驱动页面行为,而不是先执行页面行为然后再去保存状态。 简单的状态可以放在hash里
    再复杂点的可以放在localstorage或者sessionstorage里
    要是再复杂的话,建议还是层叠多个视图吧,这样无论多复杂的状态都会保存 题主如果用 传统的整页刷新模式,那必然需要 hash 标记 + jQuery 插件响应的“打配合”方案。但这实在没必要,子栏目页面之间切换而产生的反复加载、解析、执行、渲染,会非常浪费性能……
    所以,以“局部刷新”著名的 AJAX 模式,自然是实现“局部驻留”的极佳方案(IE 6 中的 Outlook Web 版是最早的实现)~
    而且,jQuery 的 load() 实例方法已经把 AJAX Get 请求、jQuery empty()、jQuery html() 封装起来,分分钟实现 局部刷新~
    以上是 用户浏览过程的“前进阶段”,而“后退阶段”就需要先在前进时留下历史记录,再在用户后退(浏览器后退功能 或 用户触发了前端工程师写的包含 history.back() 调用的代码)时恢复之前局部刷新过的 正文子页面,并把页面主框架中的 全局导航菜单 指向对应的条目。这种为 AJAX 记录历史信息的技术就是 HTML 5 History API(history.pushState() 是其最常用的 方法),IE 8/9 可以用 window.onhashchange 兼容,IE 6/7 就只能用 settimeout() 模拟 hashchange 事件 或用 iframe 的 window.history 来记录 window.parent 的 AJAX 历史~
    上述兼容在 Github 上已有成熟的开源库,也有结合 AJAX、pushState 的成熟框架 —— PJAX~
    (习惯 jQuery 风格 API 的人,推荐一下本人开发的 PJAX 模式框架 —— EasyWebApp,托管于 Git@OSC —— http://git.oschina.net/Tech_Query/EasyWebApp ) 网页的结构天然是不应当返回的,只有前进。
    返回这块被浏览器拿去了。
    自定义一个链接,跳转到另外的页面上。那就给目标页面增加Hash之类的状态识别。 三个方法 1,hash 2,localstroge 3,cookie 之前用localstorage做过,把要保存的状态push到一个对象里,加载页面的时候判断对象,不过localstorage不能不能设定寿命,也就是说你无法在用户离开你的页面时清除,所以建议你试试sessionstorage, 跟session的用法一样,会在用户离开时清除。

    热心网友 时间:2022-05-12 07:29

    四种方法,任选

    1、采用iframe,即点击之后,更新iframe,这样页面跳转了,但是左侧的导航还在, 并且还是原样
    2、采用COOKIE记录下当前展开的项
    3、采用子窗口打开新页面
    4、FF下,无须任何操作,浏览器会自动记录跳转之前的网页状态

    热心网友 时间:2022-05-12 08:47

    Jquery zTree API
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    宁波社保卡办理需要什么材料 宁波社保卡如何申领 有什么高性价比的隔离霜可以推荐? 防晒效果好的隔离霜有哪些值得入手? 下雨天经常爬在房子墙上的那种软体动物,不是蜗牛没壳的,可以在墙上把身... 原来是美男啊里面插曲、主题曲都有哪些? 请问下各位大虾,我在外地用外地农行卡网上转账到本地邮政卡星期六转账的... 为什么用支付宝买东西明明我余额足够,付款时却说我余额不足?2个... 萍乡烛式过滤器品牌 衡水烛式过滤器品牌推荐 我家路由器的第二个灯老是闪 第二个路由器接第一个路由器第二个路由器电源灯闪,但是能上网能用,怎么回事? 路由器倒数第二个灯 一直闪,网连接不上为什么 我的路由器为什么第二个灯一直在闪网络就不行了? 全身*剂“麻沸散”的发明是世界医学史上的创举,其发明者是( ) A.张仲景 B.扁鹊 C.华 路由器的第二三个灯一直来回闪是什么情况 华佗是怎么发明麻沸散的? 李时珍是怎么样发现“麻沸散”的? 谁发明了麻醉药“麻沸散” 发明“麻沸散”,被称为“外科圣手”的人是谁? 麻沸散是谁发明的? 麻沸散是谁发明的呢? VIVO nex s支持USB3.0吗 麻沸散是谁发明的?? 谁发明的麻沸散? 谁了解HALCON的机器视觉软件?需要购买吗? 2006年世界杯广告投放情况的调查报告 双目视觉标定中如何求视差值呀?到底什么是视差值?图中的m n 如何获取呀?求救。 广告调查报告中是否资料越详实越好,为什么 如何做好广告物料价格的市场调研 家里路由器有2个灯一闪一闪的,是什么情况 无线路由器第二个灯怎么老是在闪,本本的网络连不上,急急急~ 骆驼祥子读书笔记加赏析 体会 好词骆驼祥子 读书笔记 5篇 要有好词 佳句 好段 每篇300字 左右 5篇都要不同 课外选读沈石溪的部分动物小说,并谈谈自己阅读后的感悟 小学生头上长树的骆驼读后感 磁铁为什么隔着一些物体也能吸铁? 外联部的承诺书 三亚南田温泉度假村门票价格多少钱? 学校事故 急急急! 吸铁石如何隔物吸铁 三亚鸟巢度假村淡季多少钱? 亚龙湾其他的海景酒店7 8月份大约多少钱一晚 《骆驼王子》中隔壁解围读后感是什么? 为什么磁铁隔着铁片能把铁制物品吸得更紧 三亚亚龙湾鸟巢度假村价值多少钱? 求百度文库下载券账号 如何才能清新脱俗的剧情起伏跌宕的写好一个广告?这是个专为母婴健康安全设计生产的室内空气净化产品…… 骆驼王子的一篇戈壁解围的读后感。 三亚旅游大概要多少钱(自助) 高考完打算去三亚旅游,大概要多少钱? 海南省三亚市三亚湾度假村房价是多少钱?