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

使用JavaScript检测粘贴文本格式:识别ChatGPT来源文本

检测粘贴文本格式样式的解决方案

当监听粘贴事件时,仅获取纯文本无法拿到样式信息,你需要通过clipboardData对象访问剪贴板的富文本内容,以下是具体实现方案:

核心思路

通过粘贴事件的clipboardData获取HTML格式的剪贴板内容,分析其中的样式特征(比如ChatGPT粘贴文本常带的特定字体、行高、HTML结构等),再决定是否允许粘贴或处理文本。

具体实现代码

document.addEventListener('paste', function(e) {
  // 阻止默认粘贴行为,避免文本直接插入输入框
  e.preventDefault();
  
  // 获取剪贴板中的HTML富文本内容
  const htmlContent = e.clipboardData.getData('text/html');
  
  if (!htmlContent) {
    // 无富文本内容时处理纯文本
    const plainText = e.clipboardData.getData('text/plain');
    insertTextToInput(plainText);
    return;
  }
  
  // 检测HTML内容中是否包含ChatGPT粘贴的特征样式
  const isChatGPTContent = detectChatGPTFormat(htmlContent);
  
  if (isChatGPTContent) {
    // 触发拦截逻辑,可替换为提示或自定义处理
    alert('检测到疑似AI生成的粘贴内容,请手动输入或调整格式后重试');
  } else {
    // 允许粘贴,这里选择插入纯文本,也可保留格式插入HTML
    const plainText = e.clipboardData.getData('text/plain');
    insertTextToInput(plainText);
  }
});

// 自定义检测函数,识别ChatGPT粘贴的格式特征
function detectChatGPTFormat(html) {
  // 可根据实际测试的ChatGPT粘贴HTML结构调整规则
  const featurePatterns = [
    /line-height:\s*1\.5/,
    /font-family:\s*"Segoe UI",\s*Roboto/,
    /<div[^>]*style=".*"/,
    /<p[^>]*class=".*"/
  ];
  
  return featurePatterns.some(pattern => pattern.test(html));
}

// 将文本插入目标输入框的工具函数
function insertTextToInput(text) {
  const input = document.getElementById('target-input');
  if (!input) return;
  
  // 处理光标位置,实现精准插入
  const startPos = input.selectionStart;
  const endPos = input.selectionEnd;
  input.value = input.value.substring(0, startPos) + text + input.value.substring(endPos);
  input.selectionStart = input.selectionEnd = startPos + text.length;
}

关键说明

  • clipboardData.getData('text/html'):这是获取样式信息的核心,能拿到剪贴板内容的完整HTML结构及内联样式。
  • 样式特征需实测调整:不同环境下ChatGPT粘贴的HTML结构可能有差异,建议实际复制ChatGPT文本后查看其HTML源码,提取稳定的特征规则。
  • 可结合多层检测:保留语言结构检测作为补充,和样式检测形成双重验证,提升检测准确率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 09:25:29