《JS高程(3)》BOM-02(location)-第8章笔记(07)

本文详细介绍了JavaScript中的Location对象,包括其属性如URL、protocol、host等,以及如何通过Location对象进行页面跳转、刷新和解析查询字符串参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

location对象


  1. URL(统一资源定位符)
    组成:协议,服务器名称,路径,文件名和查询。
    完整的、带有授权部分的普通统一资源标志符语法:

协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志。

‘#’后跟位置标识符;
‘?’连接作用/清除缓存;
‘&’ 不同参数的间隔符;
‘?’到‘#’之间为参数部分多个参数之间用‘&’做分隔符。

URL:https://offer.1688.com/offer/post/post_navigation.htm?tracelog=qianniu_rukou_gycp&user_number_id=1934257575&user_id=1934257575

protocol协议:‘https’
host域名:‘offer.1688.com’
pathname目录:‘offer/post’;
文件名.文件后缀:‘post_navigation.htm’;
search查询字符串:‘?tracelog=qianniu_rukou_gycp&user_number_id=1934257575&user_id=1934257575’

2.location 基础知识

location:BOM对象中的一员;
location:window对象的属性;
location:document对象的属性。

window.location 与document.location 引用的是同一个对象。
用处:
提供当前窗口中加载的文档有关的信息;
部分导航功能;
将URL解析问独立的片段;

查询字符串参数

解析查询字符串,返回包含所有参数的一个对象。

URL:https://offer.1688.com/offer/post/post_navigation.htm?tracelog=qianniu_rukou_gycp&user_number_id=1934257575&user_id=1934257575

(function getQueryStringArgs(){
    //取得查询字符串并去掉开头的问号
    //判断search是否存在,若存在从第二位开始取
    var qs = (location.search.length > 0 ? location.search.substring(1): ""),
    // 保存数据的对象
    args={},
    //取得每一项
    //判断qs是否存在,若存在以'&'分隔字符
    items = qs.length ? qs.split("&"):[],
    item = null, name = null, value = null,

    i = 0 , len = item.length;
    ///逐个将每一项添加到args对象中
    for(i = 0; i < len ; i++){
        //取items各个项,并用'='分隔
        item = items[i].split("=");
        name = decodeURIComponent(item[0]);
        value =  decodeURIComponent(item[1]);

        if (name.length){
            args[name] = value;
        }
    }
    // args 返回3组值
    console.log(args)
    //Object {tracelog: "qianniu_rukou_gycp", user_number_id: "1934257575", user_id: "1934257575"}
    return args;
})()

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


位置操作

使用location 对象改变浏览器的位置。
1. 使用assign()方法并为其传递一个URL

location.assign("http://www.wrox.com");

//效果与assign相同
window.location = "http://www.wrox.com"
//最常用
location.href= "http://www.wrox.com"                                                                                                                        

通过对location的其他属性也可以修改URL:hash、search、hostname、pathname、port。修改后的URL均会生成一条新的浏览记录,因此可以通过“后退”按钮都会导航到前面一个页面。

replace(newURL):重置浏览器位置,不会在 History 对象中生成一个新的记录,newURL 将覆盖 History 对象中的当前记录。。

<p>Enjoy this page for a second, because you won't be coming back here.</p>
<script>
    setTimeout(function(){
        location.replace("http://www.wrox.com");
    },1000);
</script>

reload():参数为空,且页面内容未发生改变,默认从浏览器缓存中重新加载,参数为true时,则从服务器重新加载。


location.reload();
location.reload(true);

因reload()调用后的代码因网络延迟等问题,执行具有不确定性,所以reload()应位于代码最后一行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值