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

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

HTML5 新增的历史记录 API 可以实现刷新更改地址栏链接,配合 AJAX 可以做到刷新跳转。...renfei.org/profile/,但同时浏览器不会刷新页面,甚至不会检测目标页面是否存在。...在事件处理函数中,我们根据当前的地址抓取相应的内容,然后利用 AJAX 拉取这个地址的真正内容,呈现,即可。...最后,整个过程是不会改变页面标题的,可以通过直接对document.title赋值来更改页面标题。 其他说明 URL 的限制 为了安全考虑,新 URL 必须和当前 URL 在同一个域名下。...另外,History.js 库也提供了对老版本浏览器的 history API 支持(同样是利用替换 hash)。为了搜索引擎收录,可能需要使用#!表示法。

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

浅谈移动端页面无刷新跳转问题的解决方案

而是利用 JavaScript 动态的变换HTML的内(采用的是div切换显示和隐藏),从而实现UI与用户的交互。 由于避免了页面的重新加载,SPA 可以提供较为流畅的用户体验。...得益于ajax,我们可以实现跳转刷新,又多亏了浏览器的histroy机制,我们用hash的变化从而可以实现推动界面变化。...优点: 1.刷新界面,给用户体验原生的应用感觉,最大的优势是使用过程的流畅。 2.节省原生(android和ios)app开发成本 3.提高发布效率,无需每次安装更新包。...监听地址栏中hash变化驱动界面变化它们的变化记录浏览器会保存在history中,可以通过回退/前进按钮找回,或者history对象中的方法控制。...方法二:ajax+div+historyapi (html5推出的historyapi) 这里不细说每一个 API 的用法,大家可以看 MDN 的文档:https://developer.mozilla.org

3.6K40

javascript基础修炼(6)——前端路由的基本原理

1.HashChange 1.1 原理 HTML页面中通过锚点定位原理可进行刷新跳转,触发后url地址中会多出# + 'XXX'的部分,同时在全局的window对象上触发hashChange事件,这样在页面锚点哈希改变为某个预设值的时候...2.HTML5 HistoryAPI 2.1 原理 HTML5的History API为浏览器的全局history对象增加的扩展方法。一般用来解决ajax请求无法通过回退按钮回到请求前状态的问题。...在下面的示例中,点击导航按钮,可以看到url地址栏发生了变化,且控制台打印出了响应的信息。...url字符串 丑 正常 命名限制 通常只能在同一个document下进行改变 url地址可以自己来定义,只要是同一个域名下都可以,自由度更大 url地址变更 会改变 可以改变,也可以不改变 状态保存 内置方法...中引入该库,然后使用when()方法注册几个路由地址,再使用init()方法启动路由,脚本部分代码如下: 效果: 运行附件中的router-demo-hash.html,点击导航按钮,即可看到url地址栏以及内容区域同步更改

1.5K30

安卓Chrome使用技巧合辑

在"姊妹篇"中,将以GIF的形式显现Chrome的一些特色特性,由于图片较多,请大家使用WIFI或者在电脑上观看~ 一:利用外部应用扩展Chrome的功能:   虽然Android上的Chrome...同时,这一特性也适用于菜单项上方的导航按钮,因为Chrome的菜单键和菜单弹出后的"刷新按钮"位置是重合的,所以按住菜单按钮后保持一秒左右再松开,可以进行刷新网页的操作。   2....下划地址栏可以快速打开"标签页列表"视图,如果你只是想预览一下"标签页列表"视图后就返回当前标签,可以按住并下划地址栏来展开"标签页列表"视图(预览过程中不要松开手指),预览完毕后,上划当前标签页至地址栏的位置即可返回当前标签页...在网络连接情况下打开任何一个网页,将弹出一个"小恐龙"界面,点击小恐龙即可开始玩儿Chrome自带的游戏(700分后有惊喜)。   7....下拉刷新效果设置:   chrome://flags/#disable-pull-to-refresh-effect   此项可定义当页面垂直滚动至最顶端时,继续下拉网页是否触发自动刷新

9.5K30

【实测】django测试平台必看:各种请求方式的利弊和适用场景

【后遗症】:浏览器地址栏会变成这个url,如果刷新会重新进行请求此url,重新加载这个页面。...【后遗症】:浏览器地址栏会变成这个url,如果刷新会重新进行请求此url,重新加载这个页面。 第三种 通过url输入或者a标签href的方式请求,但返回重定向到了另一个url。...不同,可以极大避免重复刷新带来的bug,比如文章开头说的bug,就是因为没有使用这种方式,导致添加元素后,浏览器地址栏没有重定向到正常url而保留了/add/地址,那么刷新页面就会导致重新请求,所以此方式可以避免这种...【例子】:删除项目 【前端代码】: 【后代代码】: 【特点】:浏览器地址栏不会有任何变化,页面也不会刷新,这样保证了你即便手动刷新页面也不会重复触发这个功能。...这样即保证了页面刷新重新加载最新数据,又保证了浏览器地址栏无变化,简直骚到起飞~ 【扩展】:如果想在js中强行更改地址栏,可以用 document.loaction.href='/目标地址

1.2K20

关于 Nginx创建虚拟主机与地址重写

【书写网页文件】 # /usr/local/nginx/sbin/nginx -s reload                          【刷新服务...】 2.修改本地域名解析   【因测试机使用,域名解析,故需更改本地域名解析设置】 修改客户端主机192.168.4.100的/etc/hosts文件,进行域名解析 # vim /etc/hosts   ...                  【注意空格】 } } *****    redirect                                                【可加可不加,添加后可以在地址栏上看到地址的跳转...】 2.重起服务 # /usr/local/nginx/sbin/nginx  -s  reload 可利用正则进行设置 示例: #access_log  logs/host.access.log  main...为不区分大小写】 } location / { root  html; index  index.html index.htm; # rewrite /a.html /b.html redirect; } 3.刷新服务

1K10

zblogPHP增加pjax功能,大写的一个“帅”字

其中有一个很重要的组成部分,这些网站的ajax刷新是支持浏览器历史的,刷新页面的同时,浏览器地址栏位上面的地址也是会更改,用浏览器的回退功能也能够回退到上一个页面。...同时,由于刷新部分页面的时候提供了一个loading的提示,以及在刷新的时候旧页面还是显示在浏览器中,用户能够容忍更长的页面加载时间。 (2)极大地减少带宽消耗和服务器消耗。...由于只是刷新部分页面,大部分的请求(css/js)都不会重新获取,网站带有用户登录信息的外框部分都不需要重新生成了。...坏处我觉得也有: 首先是IE6等历史浏览器的支持,虽然我没有实际测试,但是由于pjax利用到了新的标准,旧的浏览器兼容会有问题。...综合起来, 由于用户体验和资源利用率的提升, 坏处是可以完全得到弥补的。  我强烈推荐大家使用。

35920

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

我们可以利用ajax进行刷新改变文档内容,但是没办法去修改URL,即无法实现浏览器的前进与后退、书签的收藏功能。...利用location的hash部分和使用window.onhashchange来实现 hash就是uri中#及后面的部分,例如:www.google.com.hk#123的#123。...当只有hash部分发生变化时,浏览器的历史记录会产生记录,但不会向服务器发出请求,这时按后退键地址栏的uri会变化但页面内容不变。...通过window.onhashchange事件来监听hash值的更改。...go([delta]):delta是个数字,如果不写或为0,则刷新本页;如果为正数,则前进到相应数目的页面;若为负数,则后退到相应数目的页面。

93420

用WPF做一个简易浏览器

当然需要说明,这篇文章不是讲如何实现浏览器的,而是利用WPF的一个浏览器控件,让大家了解一下WPF的一些简单功能。由于WPF组件庞大,没办法在一篇文章中详细介绍。...当然功能比较简陋,只有前进、后退、刷新几个功能。当然如果太复杂,就没办法在一篇文章中说完了。 ? 界面设计 布局 不管是什么图形界面框架,首先讨论的都是界面布局了。布局负责组织界面元素如何排列和显示。...利用强大的XAML,我们可以非常方便的将界面组件和功能代码对应起来。C#有一个特性叫做事件,WPF也利用了事件来处理程序响应。...更改地址栏URL 下面就剩下最后一个问题了。一般浏览器的地址栏,会随着访问网址的变化而变化。但是我们这个浏览器却没有这个功能,地址栏的地址永远是输入的那个地址。...现在我们希望不论是前进、后退,还是从浏览器中点击其他链接,地址栏的地址都会跟着更新。

3.4K50

什么年代还在用传统 Pjax? —— 自定义 Pjax 提升页面加载速度

而应该只是局部更改。 这样,Blog 当中的导航栏、样式文件等就不需要重复下载与预览。 分析 以我使用 Miracle 为主题的博客为例,进入首页,按 F12 查看页面 Elements....可以发现,页面主要更改的也就是 #page-main 部分,只需要实现动态刷新这部分的内容就可以了。 那怎么实现呢?...[0] }; // 利用 history.pushState() 修改地址栏而不跳转 history.pushState(state, '', path);...为了实现刷新跳转,必须要使用 pushState() 更改。 执行 JavaScript 方面使用 eval() 函数。...[0] }; // 利用 history.pushState() 修改地址栏而不跳转 history.pushState(state, '', path); // 修改页面标题 document.title

2.4K20

如何制作自己的原生 JavaScript 路由

侦听 “popstate ”事件以响应.pathname 的更改。每当在浏览器的地址栏中输入新的 URL,但我们不想刷新页面时,就会发生这种情况,我们只是想通过加载新内容来刷新视图。...基于 History API 的 Vanilla JS 路由设置 先让我们仔细研究构建 URL 切换器所需的最少代码(而无需刷新页面),然后我会向你展示其的工作方式的 GIF 动图。...这就是使浏览器无需重新加载页面即可更改 URL 的原因。 结果:现在,每次我们单击按钮时,URL 实际上都会在浏览器的地址栏更改。内容框也会更新。 ? 我们的原生 JS 路由开始运行了。...但是由于该事件带有单击的 id,因此单击 Back 或 Forward 时很容易刷新视图并重新加载内容。...当你第一次在 PWA 中加载此路由时,必须确保如果直接在地址栏中输入/page/home时,它可以工作。 到目前为止,我们仅从前端更改了路由器地址。

3.8K20

【面试题】hash 与 history 路由的实现原理

hash有三个特点: 1. hash 可以改变 url ,但是不会刷新页面, 这并不算是一次 http 请求,所以这种模式不利于 SEO 优化 2. hash 通过 window.onhashchange...的方式,来监听 hash 的改变,借此实现刷新跳转的功能 3. hash 永远不会提交到 server 端(可以理解为只在前端自生自灭) 底层实现原理 React 中基于hash 的 hashRouter...window.location.hash值的变化会直接反应到浏览器地址栏(#后面的部分会发生变化),同时,浏览器地址栏hash值的变化也会触发window.location.hash值的变化,从而触发onhashchange...通过 pushState 、 replaceState 来实现刷新跳转的功能。...window.history对象,该对象上包含有length和state的两个值,在它的__proto__上继承有back、forward、go等几个功能函数 在popstate之前,我们可以利用back

1.3K10

hash和history路由模式

一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI 与用户的交互,避免页面的重新加载。...其实就是说,我们点击页面上的一些东西,并没有真正的发送请求进行页面跳转,而是在组件之间切换而已,仅仅刷新局部资源。...单页应用 当我们在浏览器地址栏输入一个地址时,浏览器就会去服务端去请求内容。但每次点击一个链接,就去服务端请求,这样会有页面加载的等待。...之后的操作,只是利用 js 实现组件的展示和隐藏。除非需要刷新数据,才会利用 ajax 去请求。...比如这种: https://music.163.com/#/discover/toplist 同时浏览器也提供了一个事件来监听 hash 的改变,当 URL 的片段标识符更改时,将触发 hashchange

13110

移动端下拉刷新、上拉加载更多 Jquery插件 dropload

dropload a javascript implementation of pull to refresh and up to loadmore 移动端下拉刷新、上拉加载更多插件 背景介绍...另外还修复一个朋友发现的只调用下拉刷新,代码判断bug。...me.resetload(); } }); } }); (注明:所有示例里ajax和setTimeout都是为了模拟加载效果而写的,与本插件直接关系...ajax建议自己写,特殊情况不必copy我的ajax写法,因为写得太烂。如需下载本地运行,请在本机装服务器环境,否则ajax会报错。)...每次数据加载完,必须重置 dropReload()手动加载 已知问题 由于部分Android中UC和QQ浏览器头部有地址栏,并且一开始滑动页面隐藏地址栏时,无法触发scroll和resize

5.8K20
领券