使用JavaScript修改浏览器URL地址栏的实现代码_javascript技巧

现在的浏览器里,有一个十分有趣的功能,你可以在不刷新页面的情况下修改浏览器URL;在浏览过程中.你可以将浏览历史储存起来,当你在浏览器点击后退按钮的时候,你可以冲浏览历史上获得回退的信息,这听起来并不复杂,是可以实现的,我们来编写些代码。来看看它是如何工作的。

复制代码 代码如下:

var stateObject = {};
var title = "Wow Title";
var newUrl = "/my/awesome/url";
history.pushState(stateObject,title,newUrl);

History 对象 pushState() 这个方法有3个参数,你可以从上面的例子看到。第一个参数,是一个Json对象 , 在你储存有关当前URl的任意历史信息.第二个参数,title 就相当于传递一个文档的标题 ,第三个参数是用来传递新的URL. 你将看到浏览器的地址栏发生变化而当前页面并没刷新。

让我们看一个例子,在这个例子中我们将在每个独立的URL中存储一些任意数据。

复制代码 代码如下:

for(i=0;i<5;i++){
  var stateObject = {id: i};
  var title = "Wow Title "+i;
  var newUrl = "/my/awesome/url/"+i;
  history.pushState(stateObject,title,newUrl);
}

现在运行,点击浏览器的返回按钮,查看URL是怎么改变的。对于每次URL的改变,是因为它存储了历史状态“id”以及对应的值。但是我们怎么重新获得历史状态,并且在此基础上做些事情呢?我们需要对“popstate”添加事件监听器,这将会在每次历史对象的状态改变的时候触发。

复制代码 代码如下:

for(i=0;i<5;i++){
  var stateObject = {id: i};
  var title = "Wow Title "+i;
  var newUrl = "/my/awesome/url/"+i;
  history.pushState(stateObject,title,newUrl);
  alert(i);
}

window.addEventListener('popstate', function(event) {
  readState(event.state);
});

function readState(data){
  alert(data.id);
}

现在你会看到无论什么时候你点击返回按钮,一个“popstate”事件就会被触发。我们的事件侦听器然后检索历史状态对象与之关联的URL,并提示“id”的值。
它是非常的简单和有趣,不是吗?

英语原文: http://hasin.me/2013/10/16/manipulating-url-using-javascript-without-freshing-the-page/

时间: 2024-08-30 07:22:35

使用JavaScript修改浏览器URL地址栏的实现代码_javascript技巧的相关文章

javascript 检测浏览器类型和版本的代码_javascript技巧

检测浏览器及其版本的代码 复制代码 代码如下: getBrowser : function(){ var browser = { msie: false, firefox: false, opera: false, safari: false, chrome: false, netscape: false, appname: 'unknown', version: 0 }, userAgent = window.navigator.userAgent.toLowerCase(); if ( /(

Javascript 阻止浏览器默认操作的实现代码_javascript技巧

在很多时候,我们需要改变这些默认操作,比如:点击一个链接时,我们执行一些 ajax 操作,但是我们并不希望执行跳转动作,于是,就有了本文:阻止浏览器默认操作. 其实这并不是一个非常难的课题,单独拿出来的原因还是浏览器兼容问题: 复制代码 代码如下: <script type="text/javascript"> // 说明:Javascript 中阻止浏览器默认操作 // 作者:John Resig function stopDefault( e ) { // Preven

JavaScript 判断浏览器是否支持SVG的代码_javascript技巧

可缩放矢量图形(Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG由W3C制定,是一个开放标准.另SVG还是Static Var Generator静止无功发生器的简称 判断浏览器是否支持SVG的代码(部分截去自Highcharts源码): Js代码: 复制代码 代码如下: function hasSVG(){ SVG_NS = 'http://www.w3.org/2000/svg', return !!doc.

javascript检测浏览器的缩放状态实现代码_javascript技巧

这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放). 检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供javascript的方法来检测浏览器的缩放. 对于 IE6,就直接无视了,因为 IE6 只能对文本进行缩放. 先来说说浏览器提供的标准检测接口,window.devicePixelRatio 是设备上物理像素和设备独立像素的比例,该属性就可以用于检测网页是否被缩放了.在普通的 PC 浏览器上,在默认无缩

javascript browser浏览器类型以及版本判断代码_javascript技巧

return (Array)borwser 比如当前浏览器类型是ie6.0,那么borwser的值应该是["ie","6","6.0"] 数组的第一个值表示浏览器的类型,第二个值表示浏览器的大版本,第三个值表示浏览器的详细版本号. 复制代码 代码如下: /** * @author sky */ var browser = function() { //默认为ie6 var _a = ["ie", "6",

javascript检测浏览器flash版本的实现代码_javascript技巧

记录: 复制代码 代码如下: (function(){ ver has=0, ver=0; try{ has=new ActiveXObject('ShockwaveFlash.ShockwaveFlash'); if(has) { ver = +(has.GetVariable("$version").match(/\d+/)); } } catch(e){ has=navigator.plugins["Shockwave Flash"]; if(has) { v

在JavaScript中通过URL传递汉字的方法_javascript技巧

利用JavaScript通过URL方式向后台代码传值是一种经常用到的手段,但在传递汉字时经常会出现字符不全或变成乱码的问题,其原因是由于客户端IE浏览器的编码方式为GB2312(简体中文版WINDOWS的默认设置),而后台的C#代码使用utf8编码(创建WEB工程的默认配置). 网上有很多方案解决该问题,如将web.config的编码方式改为GB2312.在客户端通过escape先编码再传,个心体会都不是很理想或有些特殊字符不支持.经过比较我决定使用encodeURIComponent在客户端进

javascript检查浏览器是否已经启用XX功能_javascript技巧

检测浏览器是否支持cookie功能 <script> if(navigator.cookieEnabled) { document.write("你的浏览器支持cookie功能!"); } else{ document.write("你的浏览器不支持cookie!"); } </script> 检查浏览器是否已经启用Java支持功能 <script type="text/javascript"> documen

javascript实现checkbox复选框实例代码_javascript技巧

本文实例介绍了javascript实现checkbox复选框实例代码以及对checkbox复选框进行美化操作,分享给大家供大家参考,具体内容如下 1.checkbox复选框进行美化操作 复选框默认外表的美观度差强人意,能够满足美观度要求不高的页面,但是如果对于页面要求较为精致,那可能就过于勉强了,下面就一段对复选框进行美化的代码实例,希望能够给大家带来一定的帮助. 代码实例如下: <!DOCTYPE html> <html> <head> <meta charse