【问题标题】:Strip domain name from url (string)从 url 中去除域名(字符串)
【发布时间】:2010-04-08 01:45:07
【问题描述】:

我正在像这样访问样式表集合:

var css = document.styleSheets[0];

它返回例如。 http://www.mydomain.com/css/main.css

问题:如何剥离域名以获取/css/main.css

【问题讨论】:

标签: jquery string


【解决方案1】:

这个正则表达式应该可以解决问题。它将用空字符串替换找到的任何域名。也支持https://

//css is currently equal to http://www.mydomain.com/css/main.css    
css = css.replace(/https?:\/\/[^\/]+/i, "");

这将返回/css/main.css

【讨论】:

  • 简单干净,为全局标志添加使用它,如 css.replace(/https?:\/\/[^\/]+/ig, ""); @Erikk-ross,能否给它添加 http 和全局支持?
  • 我会做css = css.replace(/(https?:)?\/\/[^\/]+/i, "");,因为//前缀表示使用协议相对URL(浏览器根据主页当前使用的协议决定是使用HTTP还是HTTPS)。
【解决方案2】:

您可以使用一个技巧,通过创建一个<a>-元素,然后将字符串设置为该<a>-元素的href,然后您有一个Location object,您可以从中获取路径名。

您可以向字符串原型添加一个方法:

String.prototype.toLocation = function() {
    var a = document.createElement('a');
    a.href = this;
    return a;
};

并像这样使用它:
css.toLocation().pathname

或者让它成为一个函数:

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

并像这样使用它:
toLocation(css).pathname

这两个都会输出:"/css/main.css"

【讨论】:

    【解决方案3】:

    怎么样:

    css = document.styleSheets[0];
    cssAry = css.split('/');
    
    domain = cssAry[2];
    path = '/' + cssAry[3] + '/' + cssAry[4];
    

    这在技术上为您提供了您的域和路径。

    【讨论】:

      【解决方案4】:
      css = css.replace('http://www.mydomain.com', '');
      

      【讨论】:

        猜你喜欢
        • 2017-12-18
        • 2015-12-14
        • 2023-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        相关资源
        最近更新 更多