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

为何向字符串添加字符后,我的CMS检测代码无法正常工作?

解决CMS检测工具的匹配问题

问题根源

你代码里搜索的是带HTML实体的字符串&lt;meta name=&quot;generator&quot; ,但浏览器解析页面后,innerHTML中的HTML实体会被还原成实际字符(比如&quot;变成",&lt;变成<),所以用实体字符串去匹配自然找不到结果。另外,直接匹配HTML字符串还容易受标签格式影响——比如标签里的空格数量、属性顺序变化,都会导致匹配失败。

可靠的解决方案

别用字符串匹配HTML内容,直接用DOM API查询对应的meta标签,这种方式不受格式干扰,结果更准确:

const detectCMS = (): string => {
  // 定位name为generator的meta标签
  const generatorMeta = document.querySelector('meta[name="generator"]');
  // 检查标签是否存在,且content包含WordPress标识
  if (generatorMeta && generatorMeta.content.includes('WordPress')) {
    return 'WordPress';
  }
  // 这里可以扩展其他CMS的检测逻辑,比如检测Joomla、Drupal的generator内容
  return 'Unknown';
};

如果你坚持用字符串匹配(不推荐)

把搜索字符串改成浏览器解析后的实际字符,也就是去掉HTML实体:

const detectCMS = (): string => {
  if (document.documentElement.innerHTML.includes('<meta name="generator" ')) {
    return 'WordPress';
  }
  return 'Unknown';
};

但这种方式依然存在风险,比如目标页面的meta标签可能写成<meta name='generator'(单引号)、或者属性之间有多个空格,都会导致匹配失败,所以优先推荐DOM API的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:18:27