Creating a new Location object in javascript

后端 未结 4 1501
夕颜
夕颜 2020-11-27 12:50

Is it possible to create a new Location object in javascript? I have a url as a string and I would like to leverage what javascript already provides to gain access to the di

相关标签:
4条回答
  • 2020-11-27 13:22

    Well, you could use an anchor element to extract the url parts, for example:

    var url = document.createElement('a');
    url.href = "http://www.example.com/some/path?name=value#anchor";
    var protocol = url.protocol;
    var hash = url.hash;
    
    alert('protocol: ' + protocol);
    alert('hash: ' + hash);
    ​
    

    It works on all modern browsers and even on IE 5.5+.

    Check an example here.

    0 讨论(0)
  • 2020-11-27 13:35

    You can leverage the power of an anchor element

    var aLink = document.createElement("a");
    aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
    alert(aLink.pathname);
    
    0 讨论(0)
  • 2020-11-27 13:37

    You can parse it in a regex to get the parts as matches... I don't have the full code right now, but this can be used to get the querydata:

    var myUrl = window.location.href;
    var matches = myUrl.match(/([^\?]+)\?(.+)/);
    var queryData = matches[2];
    

    matches[0] is the full string, matches(1) is the first part of the URL (up to the ?)... you could build up a regular expression to parse each part of a string url if you want...

    You can also use one of the many libraries already out there for this.

    0 讨论(0)
  • 2020-11-27 13:41

    How about use the standard URL object?

    var url = new URL("http://www.example.com/some/path?name=value#anchor");
    var protocol = url.protocol;
    var hash = url.hash;
    

    Warning: This interface is a bit new, so, if you're not using a transpiler, please, check the compatibility table and do your tests at target browsers.

    0 讨论(0)
提交回复
热议问题