用js获取当前页面的url的相关信息方法
当前页面对应的URL的一些属性:
( http://bbs.xxx.net/forum.php?mod=viewthread&tid=2709692&page=1&extra=#pid23817304)
1)当前页面的完整的URL: window.location.href
2)当前页面的URL的pathname: window.location.pathname (http://bbs.xxx.net/forum.php)
3)当前页面的URL的问号后面的查询部分: window.location.search (?mod=viewthread&tid=2709692&page=1&extra=#pid23817304)
4)当前页面的URL的在井号“#”后面的部分:window.location.hash (pid23817304)
5)协议:window.location.protocol
6)端口:window.location.port
7)获取查询部分某个key对应的值:
var common = {}; common.getQueryString = function(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; }
这里如何理解正则表达式:new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") 呢?
?mod=viewthread&tid=2709692&page=1
window.location.search.substr(1) 去掉了最初的问号: ? ,得到 mod=viewthread&tid=2709692&page=1
"(^|&)" + name 表示以name开头,比如name="mod" 时,就是以'mod'开头;而当name="tid"时,就是匹配 &tid 了。
"=([^&]*)(&|$)" 中的 ([^&]*) 表示非 $ 字符可以出现任意次,也就是匹配非 & 的字符;然后最后的 (&|$) 表示最后是 & 比如name="tid"时,或者$比如name="page" 时。
8)获取所有的查询部分:
function GetRequest(){ var url = window.location.search; // 获取url中"?"符后的字串 var theRequest = {}; // 定义一个对象 if(url.indexOf("?") != -1){ var str = url.substr(1); var strs = str.split("&"); for(var i = 0; i < strs.length; i++){ theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return theRequest; }
将查询部分的键值对,作为一个对象返回,key为对象的属性,value为对象属性的值(其实也相当于一个map)。
相关文章
- MyEclipse取消验证Js的两种方法
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- 【JS】JavaScript的循环命令示例(for/for each/do while)
- 原生JS获取DOM元素的8种方法
- [转]使用Sencha Ext JS 6打造通用应用程序
- JS 可选链操作符?. 空值合并运算符?? 详解,更精简的安全取值与默认值设置小技巧
- js 获取css非行内样式,你应该了解的getComputedStyle方法
- js new一个对象的过程,实现一个简单的new方法
- js操作css变量
- jquery.form.js实现将form提交转为ajax方式提交的方法
- js 字符串加密解密
- base.js,通用js方法,Js方法封装
- JS教程之Electron.js设计强大的多平台桌面应用程序的好工具
- UniGui的信息弹出框MessageDlg自定义标题的方法(使用JS动态本地化文本)
- JS方法传在递参数时变量之间会有赋值,而原变量会随之改变的解决办法
- js中设置元素class的三种方法小结
- JS:获取标签的6个方法+获取html+获取body
- 自己封装的一个js方法用于获取显示的星期和日期时间
- Idea-每次修改JS文件都需要重启Idea才能生效解决方法
- [js高手之路]Node.js+jade抓取博客所有文章生成静态html文件
- js判断移动端是否安装某软软件,安装直接打开相应的链接,否则跳转到下载商店方法
- 大话js代码静态检查
- js 动态 批量 创建局部或全局变量 (转载)
- js_RGB转16进制(rgb2hex)
- 原生js源码之Array的reduce方法
- js获取DIV的位置坐标的三种方法
- JS数组常见方法的深浅拷贝分类