前端获取当前url以及解析url的具体信息

作为一个前端菜鸟,对浏览器要足够重视,今天就被问了一个问题,如何获取当前页面的url以及如何分析它的每一部分,下面记录一下我的心得。

解析URL

window对象的location属性引用的是location对象,它表示该窗口中当前显示的文档的URL,并定义了方法来使窗口载入心得文档。

  • 请注意,docuemnt的location属性也引用的是location对象。
    `window.location === document.location //true

  • location对象的href属性是一个字符串,后者包含URL的完整文版。location对象的toString()方法返回的是href属性的值。

location的其他属性

他们被称为URL的分解属性,同时被Link对象支持

前端获取当前url以及解析url的具体信息_第1张图片
下面我们来看一个有关提取URL的代码实例
虽然通过上面的属性可以访问到 location 对象的大多数信息,但其中访问 URL 包含的查询字符
串的属性并不方便。尽管 location.search 返回从问号到 URL 末尾的所有内容,但却没有办法逐个
访问其中的每个查询字符串参数。为此,可以像下面这样创建一个函数,用以解析查询字符串,然后返
回包含所有参数的一个对象:

function getQueryStringArgs(){ 
     //取得查询字符串并去掉开头的问号
     var qs = (location.search.length > 0 ? location.search.substring(1) : ""), 
     //保存数据的对象
     args = {}, 
     //取得每一项
     items = qs.length ? qs.split("&") : [], 
     item = null, 
     name = null, 
     value = null, 
     //在 for 循环中使用
     i = 0, 
     len = items.length; 
     //逐个将每一项添加到 args 对象中
     for (i=0; i < len; i++){ 
     	item = items[i].split("="); 
     	name = decodeURIComponent(item[0]); 
     	value = decodeURIComponent(item[1]); 
     	if (name.length) { 
     		args[name] = value; 
     	} 
     } 
     return args; 
} 

这一段取自高程的一段代码

  • 这个函数的第一步是先去掉查询字符串开头的问号。当然,前提是 location.search 中必须要包含一或多个字符。然后,所有参数将被保存在 args 对象中,该对象以字面量形式创建。

  • 根据和号(&)来分割查询字符串,并返回 name=value 格式的字符串数组。下面的 for 循环会迭代这个数组,然后再根据等于号分割每一项,从而返回第一项为参数名,第二项为参数值的数组。

  • 使用 decodeURIComponent()分别解码 name 和 value(因为查询字符串应该是被编码过的)。将 name 作为 args 对象的属性,将 value 作为相应属性的值。下面给出了使用
    //假设查询字符串是?q=javascript&num=10

    var args = getQueryStringArgs();
    alert(args[“q”]); //“javascript”
    alert(args[“num”]); //“10”

可见,每个查询字符串参数都成了返回对象的属性。这样就极大地方便了对每个参数的访问。

记录一下具体的操作仍需要大家去尝试。

你可能感兴趣的:(前端获取当前url以及解析url的具体信息)