`
hudeyong926
  • 浏览: 2032788 次
  • 来自: 武汉
社区版块
存档分类
最新评论

JS URL工具类

阅读更多

URL即:统一资源定位符 (Uniform Resource Locator, URL)
完整的URL由这几个部分构成:
scheme://host:port/path?query#fragment
scheme:通信协议
常用的http,ftp,maito等

host:主机
服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。

port:端口号
整数,可选,省略时使用方案的默认端口,如http的默认端口为80。

path:路径
由零或多个"/"符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。

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

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

对于这样一个URL
http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere

我们可以用javascript获得其中的各个部分
1, window.location.href
整个URl字符串(在浏览器中就是完整的地址栏)
本例返回值: http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere

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

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

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

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

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

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

 

url工具类

function parseURL(url) {
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^\/])/,'/$1'),
        relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^\//,'').split('/')
    };
}

用法:
var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');
  
myURL.file;     // = 'index.html'
myURL.hash;     // = 'top'
myURL.host;     // = 'abc.com'
myURL.query;    // = '?id=255&m=hello'
myURL.params;   // = Object = { id: 255, m: hello }
myURL.path;     // = '/dir/index.html'
myURL.segments; // = Array = ['dir', 'index.html']
myURL.port;     // = '8080'
myURL.protocol; // = 'http'
myURL.source;   // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'

取得URL的参数,以对象形式返回!
var getParam = function(path){
    var result = {},param = /([^?=&]+)=([^&]+)/ig,match;
    while((match = param.exec(path)) != null){
        result[match[1]] = match[2];
    }
    return result;
}
 
Object.keys = Object.keys || function(obj){
    var result = [];
    for(var i in obj){
        if(obj.hasOwnProperty(i)){
            result.push(i)
        }
    }
    return result;
}
var path = "http://tieba.baidu.com/f?ct=318767104&tn=baiduKeywordSearch&sc=1&pn=0&rn=50&lm=4&rs4=2&rs3=2&word=%D0%C2%BE%D3%D5%D1%C4%CB&frs=jpq";
 
var r = getParam(path);
alert(Object.keys(r))//ct,tn,sc,pn,rn,lm,rs4,rs3,word,frs
//2010.9.22更新
function getParam(name){//获取参数值 
    var sUrl = window.location.search.substr(1);
    var r = sUrl.match(new RegExp("(^|&)" + name + "=([^&]*)(&|$)"));
    return (r == null ? null : unescape(r[2]));
}

 

 

 
 
分享到:
评论

相关推荐

    封装js工具类

    ### 封装JS工具类 #### 1. Echo 方法 该方法的功能是向客户端输出指定的消息。 ```csharp public static void Echo(string msg) { HttpContext.Current.Response.Write(msg); } ``` 通过`HttpContext.Current....

    uni-app一些工具类

    2. **网络请求封装**:uni-app提供了uni.request()来处理HTTP请求,但为了简化调用和统一错误处理,开发者往往会在工具类中封装这个方法,比如`apiRequest(url, data, method)`,它可能包含了请求头设置、数据序列化...

    three.js工具类

    ### three.js工具类知识点 #### 一、Three.js概述与模型加载 - **Three.js**:是一个基于WebGL的3D库,它简化了复杂的3D图形编程,并提供了丰富的API来帮助开发者创建交互式的3D应用程序。 - **模型加载**:在本...

    qrcode的javascript工具类

    JS生成QrCode的工具类,微信支付宝等支付URL可以用这个

    加密js工具类:base64,md5,sha1

    这里我们将深入探讨这些工具类在JavaScript中的应用。 **Base64**是一种用于在网络上传输二进制数据的编码方式。它将任意可打印字符转换为一个长度为4的字符序列,每个字符来自"ASCII可打印字符"集合,包括'0'-'9'...

    一个非常健全的 Javascript 链接(URL)解析类

    通过对正则表达式的巧妙运用和动态方法的生成,该类提供了一种简洁而有效的方法来处理URL,使其成为Web开发人员处理复杂URL结构的理想工具。无论是用于解析用户输入的URL,还是在服务器端进行URL的动态构建,`Poly9....

    webservice 服务调用工具类

    工具类通过封装这些操作,提供了一种简洁的API,使得开发者无需直接与`HttpWebRequest`交互,只需传入URL和参数即可。 对于返回的数据格式,JSON(JavaScript Object Notation)和XML(eXtensible Markup Language...

    java工程常用代码工具类

    在Java编程领域,工具类(Utility Class)是程序员经常使用的代码模块,它们提供了一系列静态方法,帮助简化常见的任务,提高代码的复用性。在这个"java工程常用代码工具类"中,我们可以找到几个关键功能的实现,...

    实现HTML编码和解码的JavaScript工具类

    "js-htmlencode"就是这样一个专为此目的设计的工具类。 该工具类主要包含以下功能: 1. HTML编码:将HTML特殊字符转换为它们的HTML实体等价物。例如,`会变成`&lt;`,`&gt;`会变成`&gt;`,`"`会变成`&quot;`,`'`会...

    js常用参数检验工具类

    该javaScript库主要包括了如下模块: 1、手机号码校验; 2、身份证校验;3、邮箱校验; 4、字符串常用类; 5、简单四则运算;6、正则表达式生成工具类;... 8、url工具;9、数组工具类;10、对象工具类

    Excel导入导出工具类

    在Web应用程序中,有时我们需要提供功能让用户导入或导出Excel文件,这时就需要用到专门的Excel导入导出工具类。本文将详细讲解Excel导入导出工具类在Java Web开发中的实现原理、常用库以及实际应用。 首先,导入...

    C#200个基础工具类大全.zip

    URL的操作类;XML操作类;处理多媒体的公共类;弹出消息类;二维码操作类;汉字转拼音;加密解密;科学计数,数学;类型转换;配置文件操作类;上传下载;时间操作类;视频帮助类;数据展示控件绑定数据类;条形码帮助类;图片操作...

    Android-各种实用Android工具类

    1. **字符串处理工具类**:这类工具类通常提供如字符串格式化、校验、拼接、转换等方法,例如`StringUtils`,可以用于处理URL编码解码、去除空格、检查是否为空等操作。 2. **日期时间工具类**:Android中的日期...

    php常用工具类

    在PHP编程中,工具类(Utility Class)是程序员经常使用的代码模块,它们包含了一系列静态方法,为各种常见的任务提供简洁的解决方案。以下是一些在PHP项目中常用的工具类及其相关知识点: 1. **JS 弹窗与跳转** ...

    几个JS图片操作工具

    这篇博客“几个JS图片操作工具”(博文链接:https://dreamit.iteye.com/blog/231712)为我们揭示了一些实用的JavaScript库和方法,用于处理和操作图片。下面将详细探讨这些知识点: 1. 图片加载与预加载: 在网页...

    微信小程序的工具类简单实用

    10. **统一的日志记录**:为了便于调试和问题排查,工具类可能会自动记录每个请求的详细信息,如请求URL、参数、响应时间等。 以上是基于“微信小程序工具类简单实用”和“netUtil.js”的文件名推测的可能功能和...

    js js tool

    JavaScript(简称JS)工具类是开发Web应用时不可或缺的一部分,它们提供了一系列实用的功能,帮助开发者更高效地编写代码。在JavaScript编程中,工具类通常包含了各种常用的函数和方法,可以处理字符串、数组、对象...

    安卓开发框架工具类相关-javascript开发android应用的快速框架.zip

    【标题】"安卓开发框架工具类相关-javascript开发android应用的快速框架.zip"涉及的核心知识点是使用JavaScript开发Android应用程序,这种技术通常被称为Hybrid开发。它允许开发者利用Web技术(如HTML5、CSS3和...

    Aleppo提供一些采用JavaScript编写的一些常用工具类

    在JavaScript开发过程中,工具类(Utility Classes)是程序员经常使用的代码模块,它们包含了一系列静态方法,可以方便地处理各种常见的编程任务。"Aleppo"项目就是这样一个资源库,它为开发者提供了一些用...

    codeURL编码解码工具

    本文将详细讲解"codeURL编码解码工具"的相关知识点,包括URL编码的原理、用途以及如何使用这类工具进行编码和解码。 URL(Uniform Resource Locator)即统一资源定位符,是互联网上的资源地址。它由协议类型、主机...

Global site tag (gtag.js) - Google Analytics