Javascript URI 解析介绍


Posted in Javascript onMarch 15, 2015

解析URI是一个有意思的东西,之前没有意识到,原来这东西也可以这么复杂。

URI

在维基百科中对于URI的解释是这样子的:

 在计算机术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。 该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义。

引自网络上对于URI组成的解释,而这些可以在稍后对于URI的解析中看出来。

URI一般由三部分组成:

1.访问资源的命名机制。
2.存放资源的主机名。
3.资源自身的名称,由路径表示。

或者可以说是这样子,两者看上去是一致的。

URL的格式由下列三部分组成:

1.协议(或称为服务方式)
2.存有该资源的主机IP地址(有时也包括端口号)
3.主机资源的具体地址。,如目录和文件名等

URI解析

 “解析”一个URI意味着将一个相对URI引用转换为绝对形式,或者通过尝试获取一个可解引URI或一个URI引用所代表的资源来解引用这个URI。文档处理软件的“解析”部分通常同时提供这两种功能。

Javascript URI解析

简单地以博客中的搜索JS为例,下面就是其的URL,

https://3water.com/search/?q=js&type=
然后便有了

 var parser = document.createElement('a');

 parser.href = "https://3water.com/search/?q=js&type="

我们便可以知道其的协议、端口号、主机、具体地址等
 parser.protocol; 

 parser.host;

 parser.pathname;

 parser.search;

返回的结果便是
 protocol:http

 host:3water.com

 pathname:/search/

 search:?q=js&type=

上面的结果加出来,便是一个完整的URI。只是对于parser.search这部分不是很理解,对于?号而言,应该是参数,用于搜索的参数。

如果是对就于一个邮件的URI来说,假设URI是

 mailto:h@3water.com?subject=hello

 

那么
 var parser = document.createElement('a');

 parser.href = "mailto:h@3water.com?subject=hello";
 > parser.protocol

 "mailto:"

 > parser.pathname

 "h@3water.com"

 > parser.search

 "?subject=hello"

 
Javascript 相关文章推荐
原生js实现shift/ctrl/alt按键的获取
Apr 08 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
Feb 12 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 Javascript
vue.js学习笔记之绑定style样式和class列表
Oct 31 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
JS实现重新加载当前页面
Nov 29 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
小程序实现单选多选功能
Nov 04 Javascript
tracking.js实现前端人脸识别功能
Apr 16 Javascript
JavaScript如何实现图片处理与合成
May 29 Javascript
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
PHP+jQuery+Ajax实现多图片上传效果
Mar 14 #Javascript
jQuery oLoader实现的加载图片和页面效果
Mar 14 #Javascript
jQuery实现购物车数字加减效果
Mar 14 #Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 #Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 #Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 #Javascript
jQuery实现加入购物车飞入动画效果
Mar 14 #Javascript
You might like
smarty中改进truncate使其支持中文的方法
2016/05/30 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
Ubuntu下安装PyV8
2016/03/13 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
几个MySql的面试题
2013/04/22 面试题
Overload和Override的区别
2012/09/02 面试题
大学校庆邀请函
2014/01/11 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
关于旅游的活动方案
2014/08/15 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
小学毕业感言200字
2015/07/30 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
一文解答什么是MySQL的回表
2022/08/05 MySQL