HTML-CSS-JS Prettify报错Node.js was not found 解决方法
HTML-CSS-JS Prettify报错Node.js was not found sublime编辑器安装的插件prettify,可以格式化js css html非常好用,但是装完之后总是提示N
顺晟科技
2021-08-19 11:01:52
292
HTML5为history对象添加了两个新方法,history.pushState()和history.replaceState(),用来在浏览历史中添加和修改记录。
if (!!(window.history && history.pushState)){
// 支持History API
} else {
// 不支持
}
上面代码可以用来检查,当前浏览器是否支持History API。如果不支持的话,可以考虑使用Polyfill库History.js。
history.pushState()
history.pushState方法接受三个参数,依次为:
state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null。
title:新页面的标题,但是所有浏览器目前都忽略这个值,因此这里可以填null。
url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。
假定当前网址是example.com/1.html,我们使用pushState方法在浏览记录(history对象)中添加一个新记录。
var stateObj = { foo: \'bar\' };
history.pushState(stateObj, \'page 2\', \'2.html\');
添加上面这个新记录后,浏览器地址栏立刻显示example.com/2.html,但并不会跳转到2.html,甚至也不会检查2.html是否存在,它只是成为浏览历史中的最新记录。假定这时你访问了google.com,然后点击了倒退按钮,页面的url将显示2.html,但是内容还是原来的1.html。你再点击一次倒退按钮,url将显示1.html,内容不变。
总之,pushState方法不会触发页面刷新,只是导致history对象发生变化,地址栏会有反应。
如果pushState的url参数,设置了一个新的锚点值(即hash),并不会触发hashchange事件。如果设置了一个跨域网址,则会报错。
history.replaceState()
history.replaceState方法的参数与pushState方法一模一样,区别是它修改浏览历史中当前纪录。
history.state属性
history.state属性返回当前页面的state对象。
例如:
history.pushState({page: 1}, \'title 1\', \'?page=1\');
history.state // { page: 1 }
popstate事件
每当同一个文档的浏览历史(即history对象)出现变化时,就会触发popstate事件。
需要注意的是,仅仅调用pushState方法或replaceState方法 ,并不会触发该事件,只有用户点击浏览器倒退按钮和前进按钮,或者使用JavaScript调用back、forward、go方法时才会触发。另外,该事件只针对同一个文档,如果浏览历史的切换,导致加载不同的文档,该事件也不会触发。
项目中运用
1、修改页面日期时更新url日期参数
function changeURLArg(url, arg, arg_val) {
var pattern = arg + \'=([^&]*)\';
var replaceText = arg + \'=\' + arg_val;
if (url.match(pattern)) {
var tmp = \'/(\' + arg + \'=)([^&]*)/gi\';
tmp = url.replace(eval(tmp), replaceText);
return tmp;
} else {
if (url.match(\'[\?]\')) {
return url + \'&\' + replaceText;
} else {
return url + \'?\' + replaceText;
}
}
}
//选择日期后改变地址栏
var urlSearch = location.href;
var unformatStr = changeURLArg(urlSearch, "depDate", Qdate);
if (!!(window.history && history.pushState)) {
history.replaceState(null, "", unformatStr);
}
2、禁用浏览器后退
<script language="javascript">
//防止页面后退
history.pushState(null, null, document.URL);
window.addEventListener(\'popstate\', function () {
history.pushState(null, null, document.URL);
});
</script>
参考:
https://blog.csdn.net/u012028371/article/details/67636395
15
2022-09
15
2022-09
15
2022-09
15
2022-09
15
2022-09
15
2022-09