You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测URL中是否存在demo子域名?

实现检测demo子域名的方法

当前代码的问题

  • window.location.hostname返回的是不带协议(https://)的主机名,比如demo.stackoverflow.com,和https://demo.stackoverflow.com/直接全等匹配永远不会成立
  • 只能匹配单个固定域名,无法覆盖demo.stacks.com、demo.hello.com这类符合条件的地址

正确实现方式

方法1:正则表达式匹配

用正则检测主机名是否以demo.开头,能覆盖所有以demo作为子域名的情况:

function hasDemoSubdomain() {
  // 匹配以demo.开头的主机名
  return /^demo\./.test(window.location.hostname);
}

// 使用示例
if (hasDemoSubdomain()) {
  const script = document.createElement('script');
  script.src = './script.min.js';
  document.body.appendChild(script);
}

注:这里改用createElement创建脚本,比document.write更符合现代前端规范,避免阻塞页面渲染和潜在的DOM问题

方法2:拆分主机名检测

把主机名分拆成子域名部分,判断第一个部分是否为demo:

function hasDemoSubdomain() {
  const parts = window.location.hostname.split('.');
  // 确保至少有二级域名,且第一个部分是demo
  return parts.length >= 2 && parts[0] === 'demo';
}

// 使用示例
if (hasDemoSubdomain()) {
  const script = document.createElement('script');
  script.src = './script.min.js';
  document.body.appendChild(script);
}

说明

两种方法都能满足需求:

  • 当URL是https://demo.stackoverflow.com/、https://demo.stacks.com/或https://demo.hello.com/时,返回true
  • 当URL是https://stackoverflow.com/这类不含demo子域名的地址时,返回false

内容的提问来源于stack exchange,提问作者Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:50:22