Javascript:检测环境之间的切换

时间:2018-10-05 07:53:38

标签: javascript google-chrome-extension

我目前在一家具有以下环境的公司工作:

  • local.example.com
  • staging.example.com
  • approved-test.example.com
  • www.example.com
  • *和我无法列出的其他一些人

现在,在我的控制范围内,每台服务器上实际上都有成千上万的页面(它们非常庞大),而且如果绝对定义的链接很多。即使我可以在下一次代码刷新时在代码中修复它们,也可以将它们全部恢复。

因此,我正在尝试构建一个Chrome扩展程序,该扩展程序将允许我检测链接何时将我带出了环境。因为我受够了良心,没有意识到。

目前我有这个:

function currentURL() {
        var result = {};
        var regexParse = new RegExp('([a-z\-0-9]{2,63})\.([a-z\.]{2,5})$');
        var urlParts = regexParse.exec(window.location.hostname);
        result.domain = urlParts[1];
        result.type = urlParts[2];
        result.subdomain = window.location.hostname.replace(result.domain + '.' + result.type, '').slice(0, -1);;
        return result.subdomain;
}
function nextURL(url) {

        var result = {};
        var regexParse = new RegExp('([a-z\-0-9]{2,63})\.([a-z\.]{2,5})$');
        var urlParts = regexParse.exec(url);
        result.domain = urlParts[1];
        result.type = urlParts[2];
        result.subdomain = window.location.hostname.replace(result.domain + '.' + result.type, '').slice(0, -1);;
        return result.subdomain;
}

,我得到了URL的href属性,并与当前URL进行了比较。

我的问题是这个。有时,传递过来的链接网址很简单:

  

/下一页

或者出站链接可能是:

  

// newexample.com

因此,如您所见,下一个URL可能会有一些变化。

JavaScript不是我最擅长的技能,所以我问你们:检查我单击的链接不是外部的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

  

然后我获得了网址的href属性,并与当前网址进行了比较...

请勿使用href 属性,而应使用href 属性href 属性是一个完全解析的URL(通常可以完全解析该URL)。

例如,如果您将HTMLAnchorElementa元素的对象)引用为link,请使用:

var url = link.href;

不是

var url = link.getAttribute("href");

这是区别的一个例子:

var link = document.querySelector("a[href]");
console.log("property:  " + link.href);
console.log("attribute: " + link.getAttribute("href"));
Stack Snippets run in the domain <code>https://stacksnippets.net</code>. <a href="//stackoverflow.com">This link</a> is a protocol-relative link to Stack Overflow.