JavaScript - 将URL解析为主机名

时间:2014-05-28 14:04:43

标签: javascript parsing

我一直在寻找一种方法来解析给定的url到hostname,port和subdomian。我从这里得到了这样的代码:How do I parse a URL into hostname and path in javascript?

var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";

parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port;     // => "3000"
parser.pathname; // => "/pathname/"
parser.search;   // => "?search=test"
parser.hash;     // => "#hash"
parser.host;     // => "example.com:3000"

但是这里“parser.href”被给了一个url。而不是那样,我有一个名为'q'的用户输入JavaScirpt变量。我需要将变量'q'的值发送到parser.href。我试着简单地写为parser.href = q,但这不起作用。

然后我尝试将上面的内容实现为一个函数模型,通过它我将变量q传递给它,但这也没有用。这是功能:

  function parseUrl(url) {
        var parser = document.createElement('a');
        parser.href = url;
      return(parser.hostname);
}

var host = parseUrl(q);

我认为在执行该函数后,变量“host”将具有从该函数返回的主机名,但也无效。有人可以告诉我如何修改它以使其正常工作?

非常感谢

2 个答案:

答案 0 :(得分:1)

它已经有效了!

结帐this fiddle

function parseUrl(url) {
    var parser = document.createElement('a');
    parser.href = url;
  return(parser.hostname);
}

var host = parseUrl('http://example.com:3000/pathname/?search=test#hash');
document.write(host);

答案 1 :(得分:0)

它对我有用。

http://jsfiddle.net/rFYYv/

   function parseUrl(url) {
        var parser = document.createElement('a');
        parser.href = url;
      return(parser.hostname);
   }

var output = document.getElementById('output');
var input = document.getElementById('input');

input.onkeyup = function(e) {
    output.innerHTML = parseUrl(input.value);
};