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

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

HTML5 新增的历史记录 API 可以实现无刷新更改地址栏链接,配合 AJAX 可以做到无刷新跳转。...pushState 方法 上面的语句实际上用到了 HTML5 的历史记录 API。这套 API 提供一种「人为操纵」浏览器历史记录的方法。 浏览器历史记录可以看作一个「栈」。...每次浏览器显示的自然是最顶端的盘子的内容。 执行pushState函数之后,会往浏览器历史记录中添加一条新记录,同时改变地址栏的地址内容。...这个参数会被一并添加到历史记录中,以供以后使用。这个参数是开发者根据自己的需要自由给出的。 一个字符串,代表新页面的标题。当前基本上所有浏览器都会忽略这个参数。 一个字符串,代表新页面的相对地址。...最后,整个过程是不会改变页面标题的,可以通过直接对document.title赋值来更改页面标题。 其他说明 URL 的限制 为了安全考虑,新 URL 必须和当前 URL 在同一个域名下。

2.2K10

hash和history的原理和区别

(data[,title][,url]):替换当前页在历史记录中的信息。...history模式原理可以这样理解,首先我们要改造我们的超链接,给每个超链接增加onclick方法,阻止默认的超链接跳转,改用history.pushState或history.replaceState来更改浏览器中的...window.history.pushState({},'',path) //修改浏览器中显示的url地址 render(path) //根据path,更改页面内容...3. hash模式和history模式的区别 hash 模式较丑,history 模式较优雅 pushState 设置的新 URL 可以是与当前 URL 同源的任意 URL hash 只可修改 #...后面的部分,故只可设置与当前同文档的 URL pushState 设置的新 URL 可以与当前 URL 一模一样,这样也会把记录添加到栈中; hash 设置的新值必须与原来不一样才会触发记录添加到栈中

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

再谈location与history之跳转转态监控—router的两种实现模式

要禁用这种行为,可以使用location.replace(URL)方法结果虽然会导致浏览器位置改变,但不会在历史记录中生成新记录。...如果有 POST 数据提交,则会重新提交数据;如果想要刷新当前的页面,又避免 POST 数据提交,可以使用:window.location.replace( location.href );刷新当前页面更新内容前端改变浏览器地址刷新页面...title:目前来看没啥用(未来可能会用到),一般为空或null,URL:即要更改页面的URL,且必须同源,不能跨域;类似location =URL(但仅是更新浏览器地址栏地址,不会加重URL)history.replaceState...(state,title,URL):更改当前浏览器历史记录,即把当前执行此代码页面的记录给替换掉,参数与pushState相同;history.back()、history.forward()、history.go...pushState()JavaScript修改浏览器URL地址栏,刷新页面(vue、react项目服务端渲染,可以保持访问地址一致)var stateObject = {};var title = "

2.3K10

Vue Router的两种模式区别以及使用注意事项

尽管改变hash,浏览器本身是没有任何请求服务器动作的,但是页面状态和url已经关联起来了,这就是所谓的前端路由,单页应用的标配。...history模式 HTML5新增的API 1、history.pushState(data, title [, url]):向历史记录堆栈顶部添加一条记录; data会在onpopstate事件触发时作为参数传递过去...;title为页面标题,当前所有浏览器都会 忽略此参数;url为页面地址,可选,缺省为当前页地址; 2、history.replaceState(data, title [, url]) :更改当前历史记录...;有了这几个新的API,针对支持的浏览器,我们可以构建用户体验更好的应用了。...比如: nginx(添加到vhosts.conf) location / { try_files $uri $uri/ /index.html; } Apache <IfModule mod_rewrite.c

2.1K20

AngularDart 4.0 高级-路由概述 顶

点击浏览器的后退和前进按钮,浏览器会前后浏览您浏览过的网页的历史记录。 Angular路由器借鉴了这种模式。 它可以将浏览器URL解释为导航到客户端生成视图的指令。...并且路由器在浏览器历史记录中记录活动,所以后退和前进按钮也起作用。 设置概述 添加angular_router 路由器功能位于angular_router库中,该库自带软件包。...配置 当浏览器URL更改时,路由器会查找相应的RouteDefinition,从中可以确定要显示的组件。 直到您配置它,路由器才有路由。 以下示例创建一些路由定义。...路由将每个链接参数列表解析为完整的URL。 RouterLink指令还有助于在视觉上区分当前所选活动路线的锚点。...点击“返回”按钮,应用程序返回英雄列表,显示更改的英雄名称。 注意名称更改立即生效。 如果您点击了浏览器的后退按钮不是“返回”按钮,该应用程序也会将您返回到英雄列表。

6.1K20

JavaScript(九)

这个方法可以接收 4 个参数: 要加载的 URL、窗口目标、一个特性字符串以及一个表示新页面是否取代浏览器历史记录当前加载页面的布尔值。...这些任务会按照将它们添加到队列的顺序执行。 setTimeout() 的第二个参数告诉 JavaScript 再过多长时间把当前任务添加到队列中。...当通过上述任何一种方式修改 URL 之后,浏览器历史记录中就会生成一条新记录,因此用户通过单击”后退”按钮都会导航到前一个页面。 要禁用这种行为,可以使用 replace() 方法。...这个方法只接受一个参数,即要导航到的 URL,结果虽然会导致浏览器位置改变,但不会在历史记录中生成新记录。在调用 replace() 方法之后,用户不能回到前一个页面。...与位置有关的最后一个方法是 reload(),作用是重新加载当前显示的页面。如果调用 reload() 时传递任何参数,页面就会以最有效的方式重新加载。

1.1K40

vue-router的hash和history模式的区别

为了达到这一目的,浏览器当前提供了以下两种支持: hash —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。...(需要特定浏览器支持)这两个方法应用于浏览器历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。...只是当它们执行修改时,虽然改变了当前URL,但浏览器不会立即向后端发送请求。...URL 同源的任意 URL hash 只可修改 # 后面的部分,因此只能设置与当前 URL 同文档的 URL; pushState() 设置的新 URL 可以与当前 URL 一模一样,这样也会把记录添加到栈中...; hash 设置的新值必须与原来不一样才会触发动作将记录添加到栈中; pushState() 通过 stateObject 参数可以添加任意类型的数据到记录中; hash 只可添加短字符串; pushState

1.5K20

原 八、BOM

这个方法可以接收4个参数:要加载的URL、窗口目标、一个特性字符串、一个表示新页面是否取代浏览器历史纪录中当前加载页面的布尔值。...间歇调用和超时调用 间歇调用:setInterval() 超时调用:setTimeout() //经过1s后alert不一定执行(因为JavaScript是一个单线程序的解析器),这段代码是告诉JS再过多久才把当前任务添加到队列中..."8080" 返回URL中指定的端口号,如果包含,则返回空字符串 protocol "http:" 返回页面使用的协议 search "?...top 对象始终指向最外围的框架,也就是整个浏览器窗口。 parent 对象表示包含当前框架的框架, self 对象则回指 window。...调用 replace() 方法可以导航到一个新URL,同时该URL会替换浏览器历史记录当前显示的页面。 navigator对象提供了与浏览器有关的信息。

85450

JavaScript 高级程序设计(第 4 版)- BOM

# 导航与打开新窗口 window.open()可以用于导航到指定URL,也可以用于打开新浏览器窗口 接收四个参数:要加载的URL、目标窗口、特性字符串和表示新窗口在浏览器历史记录中是否代替当前加载页面的布尔值...() 导航到新URL,并在浏览器历史记录中增加一条记录 给location.href或window.location设置一个URL,实际还是以同一个URL值调用assign()方法 常见的是设置location.href...,除了hash外,设置location的一个属性就会导致页面重新加载新URL 如果希望增加历史记录,可以使用replace()方法,重定向后后退按钮是禁用状态 reload() 能重新加载的当前显示的页面...对象 history 对象表示当前窗口首次使用以来用户的导航历史记录 history 对象还有一个 length 属性,表示历史记录中有多个条目 # 导航 go() 可以在用户历史记录中沿任何方向导航,...hashchange 会在页面 URL 的散列变化时被触发,开发者可以在此时执行某些操作。 状态管理 API 则可以让开发者改变浏览器 URL 不会加载新页面。

1.2K10

单页面应用history路由实现原理

() 是修改了当前历史记录不是新建一个,也就是说history.pushState()之后,history.length会加一,但是replaceState()却不会。...注意这并不会阻止其在全局浏览器历史记录中创建一个新的历史记录项。...URL:该参数定义了新的历史URL记录。注意,调用 pushState() 后浏览器并不会立即加载这个URL,但可能会在稍后某些情况下加载这个URL,比如在用户重新打开浏览器时。...history.back()时,会直接跳转到oecom1路由上,原因就在于replaceState是直接将当前路由替换掉,不是增加一个。...你可以读取当前历史记录项的状态对象state,不必等待popstate 事件, 只需要这样使用history.state 属性: let currentState = history.state; 上面我们说了

3.2K10

vue路由mode模式:history与hash的区别

为了达到这一目的,浏览器当前提供了以下两种支持: 1.hash(默认) —— 即地址栏 URL 中的 # 符号(此 hash 不是密码学里的散列运算)。...(需要特定浏览器支持) 这两个方法应用于浏览器历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。...只是当它们执行修改时,虽然改变了当前URL,但浏览器不会立即向后端发送请求。...可以是与当前 URL 同源的任意 URL hash 只可修改 # 后面的部分,因此只能设置与当前 URL 同文档的 URL; 2.pushState() 设置的新 URL 可以与当前 URL 一模一样...,这样也会把记录添加到栈中; hash 设置的新值必须与原来不一样才会触发动作将记录添加到栈中; 3.pushState() 通过 stateObject 参数可以添加任意类型的数据到记录中; hash

4.6K10

git常用命令整理

git init:在当前目录中创建一个新的Git仓库。git clone :从远程仓库克隆一个仓库到本地。添加和提交代码在Git中,您需要将代码添加到仓库中,并提交更改。...以下是一些命令:git add :将文件添加到暂存区。git add .:将所有更改添加到暂存区。...以下是一些命令:git remote add :将远程仓库添加到本地仓库。git push :将本地分支推送到远程仓库。...git pull :从远程仓库拉取更改并合并到本地分支。日志和检查在Git中,您可以查看提交历史记录更改的状态。以下是一些命令:git log:查看提交历史记录。...其他命令除了上述命令外,Git还有其他一些常用的命令:git stash:将当前更改保存到堆栈中,以便稍后恢复。git cherry-pick :将指定提交中的更改应用到当前分支。

48320

BOM 是个什么玩意!

历史记录对象,代表浏览器的历史信息 Location:地址栏对象,代表浏览器当前的地址信息 1.2 Windows 对象    所有浏览器都支持 window 对象,它表示浏览器窗口。...方法 描述 alert( ) 弹出警告框 prompt( ) 弹出可输入对话框 confirm( ) 弹出确认框 colse( ) 关闭当前窗口 open(URL) 打开新窗口 setTimeout(“...1.4.1 常用方法 方法 描述 reload() 刷新网页 assign(URL) 跳转到指定的 URL当前页面会转为新页面内容,可以点击后退返回上一个页面 replace(URL) 通过加载 URL...1.5 Navigator 对象    代表浏览器当前的信息,通过Navigator我们可以获取用户当前使用的是什么浏览器。...注意  来自 navigator 对象的信息具有误导性,不应该被用于检测浏览器版本,这是因为:   ♞ navigator 数据可被浏览器使用者更改   ♞ 一些浏览器对测试站点会识别错误

1.2K30

Window.location 详细介绍

如何更改 URL 属性 你不仅可以调用 location 的属性来检索 URL 信息,还可以使用它来设置新的属性和更改 URL 。接下来让我们一起来看看。...window.location 函数 window.location .assign() 跳转到给定的 URL .replace() 跳转到给定的 URL,并且从历史记录中删除当前页面 .reload...很明显 href 将 提供 URL toString() 看起来像是被转换成字符串的东西。 assign vs replace 这两种方法都可以帮助您重定向或导航到另一个 URL 。...window.location.replace('https://www.samanthaming.com'); replace vs assign vs href 这三个都是重定向的,区别在于浏览器历史记录...它会在历史记录中保存当前页面, replace 不会。所以如果你喜欢创建一个导航不能回到原始页面的体验,请使用 replace。 现在的问题是 assign vs href。我想这可能是个人喜好。

1.8K30

JS浏览器环境下各种实用API记录

写权限"自动授予脚本,"读权限"必须用户明确同意给予。也就是说,写入剪贴板,脚本可以自动完成,但是读取剪贴板时,浏览器会弹出一个对话框,询问用户是否同意读取。...另外,需要注意的是,脚本读取的总是当前页面的剪贴板。这带来的一个问题是,如果把相关的代码粘贴到开发者工具中直接运行,可能会报错,因为这时的当前页面是开发者工具的窗口,不是网页页面。...Pjax相关 1. document.title,修改浏览器显示的网页标题。 2. history对象新增的方法,修改浏览器顶部显示的URL,增加一条历史记录。...;url为页面的URL写则为当前页。...replaceState(data, title [, url]):更改当前页面的历史记录。参数同上。这种更改并不会去访问该URL

77020

前端路由的原理及应用

主要有两种方法: 1.设置a标签的href属性为一个hash值,当点击a标签时会在当前url后面增加上hash值,同时触发'hashchange'事件;2.直接在js中对location.hash进行更改...传入的url可以为绝对路径或相对路径,若为相对路径,那么它将被作为相对于当前URL处理。新URL必须与当前URL同源,否则 pushState() 会抛出一个异常。该参数是可选的,缺省为当前URL。...并且,这两个API都会操作浏览器的历史栈,不会引起页面的刷新。 不同的是,pushState 将指定的url直接压入历史记录栈顶, replaceState 则是将当前历史记录栈换成传入的数据。...当网页加载时,各浏览器对popstate事件是否触发有不同的表现,Chrome 和 Safari会触发popstate事件, Firefox不会....page=3"); //修改当前激活的历史记录条目 http://ex..?page=2 变为 http://ex..?

2.2K20
领券