在中文加入到地址栏前,进行两次encodeURI转码 , 在传输过程中浏览器会解析一遍,到达指定页面获取地址栏参数的时候,再进行一次decodeURI解码就可以了。
查看实例a.html和b.html 页面
a.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
//这是第一个页面a.html
//通过地址栏传参的方式设置第二个页面b.html的标题为:中文
var title = "中文";
var _t = encodeURI(encodeURI(title));
window.location.href = "b.html?title="+_t;
</script>
</html>
b.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
var _t = getQueryString("title"); //获取地址栏参数
var title = decodeURI(_t); //只需要转一次码
document.getElementsByTagName("title")[0].innerHTML = title;
//获取地址栏参数的方法
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
</script>
</html>
把a.html和b.html复制到同一目录下,打开a.html即可看到效果。实测IE,Chrome,Fire Fox等主流浏览器均没有问题。
网友评论