Js控制URL

浏览器的location对象拥有很多方便的属性用于获取当前URL的组成部分:

  • location.protocol:协议名
  • location.username:用户名
  • location.password:密码
  • location.hostname:主机名
  • location.port:端口号
  • location.host:主机名和端口号
  • location.pathname:路径
  • location.search:查询串
  • location.hash:书签名

在较新(未测试,估计是支持跨域XHR之后的)浏览器中,还有

location.origin:协议名、主机名和端口号
可以使用。


解决方案:

  1. 构造一个HTMLAnchorElement(或者HTMLAreaElement)对象。
  2. 将该对象的href设置为要解析的URL。
  3. 获得对象的相关属性。

HTML


<input type="text" id="url" value="https://github.com:8000/foo?bar#quz" />
<button id="parse">Parse</button>
<pre id="result"></pre>

JS


function parseURL(url) {
    var anchor = document.createElement('a')
    var undefined = void 0
    var parts = {
        protocol: undefined,
        host: undefined,
        port: undefined,
        hostname: undefined,
        pathname: undefined,
        search: undefined,
        hash: undefined
    }
    anchor.href = url
    for (var key in parts) {
        parts[key] = anchor[key]
    }
    return parts
}

document.getElementById('parse').onclick = function () {
    var parts = parseURL(document.getElementById('url').value)
    var text = ''
    for (var key in parts) {
        text += key + ': ' + parts[key] + '\n'
    }
    document.getElementById('result').innerText = text
}

location.origin兼容IE (IE11+才有origin属性)


if (window["context"] == undefined) {  
    if (!window.location.origin) {  
        window.location.origin = window.location.protocol + "//" + window.location.hostname +   
        (window.location.port ? ':' + window.location.port: '');  
    }  
    window["context"] = location.origin+"/V6.0";  
}  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,681评论 19 139
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,694评论 2 56
  • Location介绍 location指示了其所连接对象的url位置。Document和window对象中都有lo...
    胡不归vac阅读 13,724评论 0 7
  • 一、概念(载录于:http://www.cnblogs.com/EricaMIN1987_IT/p/3837436...
    yuantao123434阅读 12,696评论 6 152
  • 午加餐:紫米摊饼,小米炒米晚水果:西瓜,哈密瓜 参考目标: 1份肉2份豆制品3份“新鲜”水果4份谷物/薯5份蔬菜,...
    静趣_儿童心理师阅读 1,462评论 0 0