JavaScript学习之获取URL参数

时间:2021-12-14 10:06:51

  最近看了几道面试题,其中有一道就是关于写一个方法来获取浏览器地址栏URL查询部分的字段内容。虽然之前看过相关的东西,但感觉有点模糊,所以就又全面的学习一遍,谨以此文记之!

准备知识

  在JavaScript中,既然说到URL(这里也只是根据本题浅显介绍),那肯定就要说Location对象了:

    ①Location对象是window对象的一个属性,可通过window.location来访问(因为window就是全局对象,所以可以直接使用location来引用Location对象喽);

    ②Location对象包含当前有关URL的信息。

  Location对象的八个属性:

属性

描述

hash

设置或返回从井号(#)开始的URL(锚)

host

设置或返回主机名和当前URL的端口号

hostname

设置或返回当前URL的主机名

href  

设置或返回完整的URL

pathname

设置或返回当前URL的路径部分

port

设置或返回当前URL的端口号

protocol

设置或返回当前URL的协议

search

设置或返回从问号(?)开始的URL(查询部分)

    还有一个属性,名字是origin,它的定义相当于:协议+主机名(域名)+端口号(IE下不支持此属性,我看w3cSchool上也没有,但Chrome和FF中却有,不知是否是标准)。以下是各个属性的实际取值(Chrome下):

JavaScript学习之获取URL参数

    因为这个URL使用的是浏览器默认端口80,所以函数端口号的地方都使用空字符串代替了。

  Location对象的三个方法:

属性

描述

assign(newURL)

加载新的文档,会将当前文档地址和新的文档地址放到历史记录中

reload(force)

重新加载当前文档:①如果该方法没有设置参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的;②如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。

replace(newURL)

用新的文档替换当前文档,但是当前文档地址会从历史记录中删除

获取URL参数

  上面复习了一下Location对象,下面开始说正题。获取URL参数,一开始我是把所有参数的信息都放入一个对象然后返回这个对象,实现如下:

function getUrlSearchObj(url){
var result = {};
var searchIndex = url.indexOf('?');
var hashIndex = url.indexOf('#')===-1?url.length:url.indexOf('#');
var searchStr = url.slice(searchIndex+1, hashIndex);
var searchArr = searchStr.split('&');
for(var i=0;i<searchArr.length;i++){
var eleArr = searchArr[i].split('=');
result[eleArr[0]] = eleArr[1];
}
return result;
}

  当然,在实际项目中大多数是根据一个参数名来获取当前URL中该参数的值,实现如下:

function getSearchString(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var result = window.location.search.substr(1).match(reg);
if(result != null){
return result[2];
}else{
return null;
}
}

JavaScript学习之获取URL参数的更多相关文章

  1. django学习-5&period;获取url参数和name的作用

    1.前言 假如我们要打开这两个博客园地址:[https://www.cnblogs.com/xiamen-momo/archive/2020/11.html].[https://www.cnblogs ...

  2. javascript获取url参数的方法

    发布:thatboy   来源:Net     [大 中 小] 本文介绍下,在javascript中取得url中某一个参数的方法,这里分享一个小例子,供大家学习参考下.本文转自:http://www. ...

  3. JavaScript获取URL参数公共方法

    写一个JavaScript获取URL参数的通用方法,可以把它放到常用方法的JS文件中调用,直接上代码例子,新手可以学习一下! <!DOCTYPE html> <html lang=& ...

  4. 多浏览器兼容用javascript获取url参数的方法比较推荐的一种

    多浏览器兼容用javascript获取url参数的方法比较推荐的一种 <script language = javascript> function request(paras){ var ...

  5. javascript获取URL参数和参数值

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. JavaScript&amp&semi;jQuery获取url参数方法

    JavaScript&jQuery获取url参数方法 function getUrlParam(name){ var reg = new RegExp("(^|&)&quot ...

  7. js&lowbar;html&lowbar;input中autocomplete&equals;&quot&semi;off&quot&semi;在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C&num;模拟httpwebrequest请求&lowbar;向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP&period;NET EF 使用LinqPad 快速学习Linq

    js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...

  8. javascript 获取url参数

    /** window.location.search获取url地址?以后的值 获取url参数有两种方法,第一种如下,第二种是通过正则 */ //基本版 function getParam() { va ...

  9. 使用jquery获取url以及jquery获取url参数的方法

    使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下 1.window.location.href; 其实只是用到了javas ...

随机推荐

  1. VS Extract Method

    前言 看重构6.4Replace Temp with Query(以查询取代临时变量)中提到Replace Temp with Query往往是你运用Extract Method之前必不可少的一个步骤 ...

  2. IOS 推送消息 php做推送服务端

    IOS推送消息是许多IOS应用都具备的功能,最近也在研究这个功能,参考了很多资料终于搞定了,下面就把步骤拿出来分享下: iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPh ...

  3. andriod 图片选择器

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...

  4. linux for java programer

    http://www.kancloud.cn/digest/javaxviii/126781 .查找文件 find / -name filename.txt根据名称查找/目录下的filename.tx ...

  5. selenium-grid2 远程并发控制用例执行

    今天闲来无事,随意看了一下selenium,突然注意到grid这个功能以前都是,在读有关selenium的文档时候知道有这么个grid远程控制的功能,但一直没有去试过.所以呢,今天就简单的做了这么个小 ...

  6. sed替换单引号

    echo "Cfoo'barxml" | sed "s/'/::/g" |  sed 's/::/\\:/g' |  sed "s/:/'/g&quo ...

  7. magento添加系统sections配置时应注意的事项

    (1)只有在新增sections是需要增加对应的acl配置,这个配置可以放在config.xml中或者放在adminhtml.xml中 <adminhtml> <acl> &l ...

  8. 为程序指定运行时所在的CPU核

    internal class Program { [DllImport("kernel32.dll")] private static extern uint GetTickCou ...

  9. 构造Nexus,仓库部署成员Nexus仓

    在一个,我们描述了如何配置安装nexus制,本节,我们来介绍nexus采用 1.登录 在红色的部分点击登陆.输入username与password admin/admin123. 这里能够配置nexu ...

  10. 性能测试监控:Jmeter &plus;InfluxDB &plus;collectd &plus;Grafana

    虚拟机ip 192.168.180.128 Influxdb Influxdb是一个开源的分布式时序.时间和指标数据库,使用go语言编写,无需外部依赖. 它有三大特性: 时序性(Time Series ...