JavaScript 将地址栏参数 Object 对象

发布于 2019-11-09 19:44:04 字数 2809 浏览 1927 评论 0

window.location 可获取地址栏的一系列信息,并且每个浏览器都支持该属性,非常方便。而获取到的问号后面的参数可以进行加工转变成我们所想要的键值对。

Location 的属性

属性名例子说明
hash#contents返回URL的hash(#后跟零或多个字符),如果URL中不包含散列,则返回空字符串
hostwww.wrox.com:80返回服务器名称和端口号(如果有)
hostnamewww.wrox.com返回不带端口号的服务器名称
hrefhttp://www.wrox.com返回当前加载页面的完整URL。而location对象的toString()方法也返回这个值
pathnameWileyCDA返回URL中的目录或文件名
port8080返回URL中指定的端口号。如果URL中不包含端口号则返回空字符串
protocolhttp:返回页面的使用协议。通常是http:或https:
search?q=javascript返回URL的查询字符串,这个字符串以问号开头

而修改了其中的任何属性,都会使得页面刷新,当然页面刷新还有其它方式。

Location 的刷新

location.assign(url);              // 跳转链接
location.href = url;               // 跳转链接
window.location = url;              // 跳转链接
location.replace(url);              // 链接链接,不保存于历史纪录
location.reload();                // 刷新,从缓存中读取
location.reload(true);             // 刷新,重新从服务器读取

queryString 参数转换为对象

function getQueryStringArgs() {
    var qs = (location.search.length > 0 ? location.search.substring(1) : ""),
        args = {},
        items = qs.length ? qs.split("&") : [],
        item = null,
        name = null,
        value = null,
        i = 0,
        len = items.length;

    for (i = 0; i < len; i++) {
        item = items[i].split("=");
        
        // decodeURIComponent解码
        name = decodeURIComponent(item[0]);
        value = decodeURIComponent(item[1]);
        
        if (name.length) {
            args[name] = value;
        }
    }

    return args;
}

通过调用 getQueryStringArgs() 方法就可以返回地址栏中的参数信息,并保存于对象中。

对象转换为 queryString 查询参数

// json to queryString
cleanArray(actual) {
  const newArray = []
  for (let i = 0; i < actual.length; i++) {
    if (actual[i]) {
      newArray.push(actual[i])
    }
  }
  return newArray
},
param(json) {
  if (!json) return ''
  return this.cleanArray(Object.keys(json).map(key => {
    if (json[key] === undefined)
      return ''
    return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
  })).join('&')
},

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文