【问题标题】:How to fetch a site name from URL in Javascript?如何从 Javascript 中的 URL 获取站点名称?
【发布时间】:2012-12-20 11:21:27
【问题描述】:

有没有一种简单的方法可以从 URL 字符串中获取站点名称?

例子:

http://www.mysite.com/mypath/mypage -> www.mysite.com
http://mysite.com/mypath/mypage     -> mysite.com

JS代码在mongodb CLI端执行,不是在浏览器中执行。

【问题讨论】:

  • 请问,为什么要在 MongoDB CLI 中执行?在 node.js 中插入文档时这样做不是更谨慎吗?还是在查询它?
  • 这是 MongoDB 中 group 查询的一部分。
  • 你能告诉我们你对这个组查询atm有什么吗?这样做听起来不错,更重要的是,如果您经常查询(分组)站点名称,您可能希望使用预先正则表达式的站点名称保存文档,因为即使您可以在聚合框架中正则表达式它永远不能使用会很慢的索引的部分
  • stackoverflow.com/questions/14182973/… - 请查看标记的答案(以及我的评论)
  • 该组既旧又慢,而且它不适用于分片集合,并且在运行时从其他操作中获取完全读取锁定(docs.mongodb.org/manual/reference/commands/#group)但是是的,我看到您没有使用该正则表达式作为条件应该没问题。

标签: javascript node.js mongodb serverside-javascript


【解决方案1】:

我还需要从 url 获取域,以便在我的应用程序的参考部分仅显示域名。

我在这里找到了这个: https://developer.mozilla.org/en-US/docs/Web/API/URL/URL

URL() 构造函数返回一个新创建的 URL 对象,表示 参数定义的 URL。

如果给定的基本 URL 或生成的 URL 不是有效的 URL,则 抛出 JavaScript TypeError 异常。

function getDomain(url) {
   return new window.URL(url).hostname;
}

new URl(url) 返回一个具有以下属性的对象

hash: ""
host: "developer.mozilla.org"
hostname: "developer.mozilla.org"
href: "https://developer.mozilla.org/en-US/docs/Web/API/URL/URL"
origin: "https://developer.mozilla.org"
password: ""
pathname: "/en-US/docs/Web/API/URL/URL"
port: ""
protocol: "https:"
search: ""

【讨论】:

  • 虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案添加解释并说明适用的限制和假设。
【解决方案2】:

这个对我很有效:

urlString.split('/')[2]

【讨论】:

    【解决方案3】:

    您可以滥用锚点来从 URL 中获取所需的数据。 :D

    function getDomain(url) {
      var anchor = document.createElement('a');
      anchor.setAttribute('href', url);
    
      return anchor.hostname;
    }
    
    console.log(getDomain('http://www.mysite.com/mypath/mypage'));
    console.log(getDomain('http://mysite.com/mypath/mypage'));
    

    http://jsfiddle.net/Js76M/

    【讨论】:

    • 问题是关于服务器端 JS(mongodb/node.js 等) - 我的问题已被其他人编辑,已回滚
    【解决方案4】:

    试试这个:

    url.href = "http://www.mysite.com/mypath/mypag";
    
    url.protocol; // => "http:"
    url.hostname; // => "example.com" // site name, you want
    

    window.document.location.href 包含页面的 url,window.document.location.hostname 包含站点名称。

    所以,

    console.log(window.document.location.hostname); // will log the sitename in the console
    

    【讨论】:

    • 请问url是如何创建的?
    【解决方案5】:

    简单。

    window.location.hostname; //Domain name
    
    $("title").text(); //Page name
    

    还有这个

    var loc = window.location;
    
    var filename = loc.pathname.split("/");
    filename = filename[pathname.length-1];
    
    alert("Domain: "+loc.hostname);
    alert("Filename: "+filename);
    

    【讨论】:

    • aha.....好吧,当我看到你的帖子时,我很抱歉它没有提到 cli 的事情..让我看看....for mongo
    • 其实,这不是我的帖子 :)
    • 第二个选项将我推向了正确的答案:) 继续投票
    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 2019-07-13
    • 2018-06-26
    • 2016-05-13
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多