Javascript解析URL方法详解


Posted in Javascript onDecember 05, 2014

URL : 统一资源定位符 (Uniform Resource Locator, URL)

完整的URL由这几个部分构成:
scheme://host:port/path?query#fragment

scheme  = 通信协议 (常用的http,ftp,maito等)
host = 主机 (域名或IP)
port = 端口号
path = 路径

query = 查询
可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用”&”符号隔开,每个参数的名和值用”=”符号隔开。

fragment = 信息片断
字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点.)

对于这样一个URL
http://www.master8.net:80/seo/?ver=1.0&id=6#imhere

我们可以用javascript获得其中的各个部分
1, window.location.href
整个URl字符串(在浏览器中就是完整的地址栏)

2,window.location.protocol
URL 的协议部分
本例返回值:http:

3,window.location.host
URL 的主机部分
本例返回值:www.master8.net

4,window.location.port
URL 的端口部分
如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符
本例返回值:”"

5,window.location.pathname
URL 的路径部分(就是文件地址)
本例返回值:/seo/

6,window.location.search
查询(参数)部分
除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值
本例返回值:?ver=1.0&id=6

7,window.location.hash
锚点
本例返回值:#imhere

8. url参数值

方法一:正则分析法

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;

}

方法二:采用split拆成数组

function GetRequest() {

   var url = location.search; //获取url中"?"符后的字串

   var theRequest = new Object();

   if (url.indexOf("?") != -1) {

      var str = url.substr(1);

      strs = str.split("&");

      for(var i = 0; i < strs.length; i ++) {

         theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);

      }

   }

   return theRequest;

}

方法很简单,却是很实用,这里列出了2种自己常用的方法,小伙伴们有不同的方法还请告之,本文持续更新。大家共同进步

Javascript 相关文章推荐
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
js数组循环遍历数组内所有元素的方法
Jan 18 Javascript
基于jQuery实现的图片切换焦点图整理
Dec 07 Javascript
浅谈下拉菜单中的Option对象
May 10 Javascript
基于insertBefore制作简单的循环插空效果
Sep 21 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
Mar 14 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
jQuery手风琴的简单制作
May 12 jQuery
JavaScript数组排序的六种常见算法总结
Aug 18 Javascript
vue实现登录功能
Dec 31 Vue.js
JavaScript canvas实现流星特效
May 20 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 #Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
Dec 05 #Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 #Javascript
Javascript实现获取窗口的大小和位置代码分享
Dec 04 #Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 #Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 #Javascript
jquery实现动态画圆
Dec 04 #Javascript
You might like
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
php实现socket推送技术的示例
2017/12/20 PHP
基于jquery的Repeater实现代码
2010/07/17 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
javascript数组去重方法汇总
2015/04/23 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Python的设计模式编程入门指南
2015/04/02 Python
python中的编码知识整理汇总
2016/01/26 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
python实现简单日期工具类
2019/04/24 Python
numpy.where() 用法详解
2019/05/27 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
校园创业策划书
2014/01/14 职场文书
法学自荐信
2014/06/20 职场文书
教育合作协议范本
2014/10/17 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python