1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > 域名 > 正文

域名

如何得到JavaScript文件所在的服务器域名

1987web2022-09-15域名274

可以分两个步骤实现:

获得JavaScript文件的URL

现代浏览器均已支持 document.currentScript 属性,它会返回当前正在执行的脚本所在的script标签。所以我们可以很容易地获取当前脚本的URL:

const jsFileUrl = document.currentScript.src;

这里需要注意IE不支持此属性,你需要借助一个兼容库以支持IE。

解析URL字符串得到域名

在获得了JS文件URL之后,需要从字符串中解析得到域名。对于这个需求,我喜欢用URL构造函数来解决。我们可以把一个URL字符串传递给URL构造函数,然后返回的对象中含有一些有用的信息:

所以,我们可以用一行代码搞定,例如:

const getSrcHost = () => new URL(document.currentScript.src).hostname;

在一个完美的世界中,一切就是如此简单。不过还有一个不容忽视的浏览器 – IE,它不支持URL API!

首先我们要检查这个特征是否被当前浏览器支持,这是从 Modernizr 借鉴的代码:

执行 isURLAPIWorking() 函数之后,我们就得知了当前浏览器是否支持URL API。对于不支持的浏览器,我们需要借助于别的方式。你可能会首先想到用正则表达式匹配出域名,这是一个方案,不过存在许多技术难点。域名的后缀数量巨大而且还在不停增加中,这给开发维护带来了很大的工作量。

如下是另一种方案:

上面的代码借助于 a 标签的href属性,通过动态创建a标签的方式实现了动态解析。这种聪明的方式巧妙地利用了浏览器自身的特性,而且让我们的代码更简洁和易于维护。

我们把上述代码整理一下,代码如下:

希望本文对你有帮助。喜欢记得关注。

举报/反馈