包含history.pushstate的词条

http://www.itjxue.com  2023-01-22 11:21  来源:未知  点击次数: 

html5 history.pushstate有什么用

HTML5为history对象添加了两个新方法,history.pushState() 和 history.replaceState(),用来在浏览历史中添加和修改记录。所有主流浏览器都支持该方法(包括IE10)。

if (!!(window.history history.pushState)){

// 支持History API

} else {

// 不支持

}

上面代码可以用来检查,当前浏览器是否支持History API。如果不支持的话,可以考虑使用Polyfill库History.js。

history.pushState方法接受三个参数,依次为:

state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null。

title:新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。

url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。

history.pushstate;什么意思

你要问的应该是浏览器的history,也就是历史记录;我们都知道在页面中我们可以使用javascript?window?history,后退到上一页面,但是出于安全考虑,javascript?history不允许修改history里已有的url链接(也就是历史记录里面的页面地址),但可以使用pushState(相当于进栈意思)方法往history里增加url链接,并且提供popState事件(相当于出栈)监听从history栈里弹出url,所以我们就可以监听popState事件,进行相应操作,如下:

语法:element.addEventListener(event,function,useCapture);

参数:

element:文档节点、document、window?或?XMLHttpRequest

event:事件类型,如"click"?或?"mousedown"

function:事件触发后调用的函数或者是实现了EventListener接口

useCapture:布尔值,用于描述事件是冒泡还是捕获,参数可选,默认false(冒泡)

注意:event不要使用?"on"?前缀。?例如,使用?"click"?,而不是使用?"onclick"

事件冒泡还是捕获?

事件传递方式有两种:冒泡、捕获、

事件传递定义了元素触发的顺序,如果你将?p?元素插入到?div?元素中,用户点击?p?元素,?哪个元素的?"click"?事件先被触发呢?

在?冒泡?中,内部元素的事件会先被触发,然后再触发外部元素,即:?p?元素的点击事件先触发,然后会触发?div?元素的点击事件。

在?捕获?中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即:?div?元素的点击事件先触发?,然后再触发?p?元素的点击事件。

addEventListener()?方法可以指定?"useCapture"?参数来设置传递类型:

addEventListener(event,?function,?useCapture);

默认值为?false,?即冒泡传递,当值为?true?时,?事件使用捕获传递。

示例:手机端监听物理返回键

pushHistory();

function?pushHistory()?{

var?state?=?{

title:?"title",?????//可以给null值

url:?"#"????//可以给null值

};

window.history.pushState(state,?"title",?"#");

}

//监听到popState事件要执行的操作

window.addEventListener("popstate",?function(e)?{

//该干嘛干嘛

},?false);????//false表示冒泡

以上是个人见解,看下能不能帮得上

急!关于history.pushState的参数问题

从根路径开始,一般是方便维护,你也可以使用相对路径 ,不过不太直观,建议从根目录开始

(责任编辑:IT教学网)

更多

推荐Windows服务器文章