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

如何实现鼠标选中高亮网页文本后自动获取内容并提交到API接口

选中文本自动上传API实现方案

一、前端JS实现逻辑

核心思路是监听用户选中文本后的鼠标抬起事件,获取选中内容后通过异步请求提交到你的PHP接口,增加防抖逻辑避免重复提交。
你可以把这段JS嵌入到自己的站点页面中,如果需要在任意第三方网页生效,把代码封装为油猴脚本即可。

// 防抖函数,避免选中过程中频繁触发请求
function debounce(func, delay = 300) {
  let timer = null;
  return function(...args) {
    clearTimeout(timer);
    timer = setTimeout(() => func.apply(this, args), delay);
  }
}

// 处理选中文本逻辑
const handleSelection = debounce(() => {
  // 获取选中的文本并去除首尾空白
  const selectedText = window.getSelection().toString().trim();
  // 选中内容不为空才提交
  if (selectedText.length > 0) {
    // 发送POST请求到你的API接口
    fetch('替换为你的PHP接口地址', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
      },
      body: `content=${encodeURIComponent(selectedText)}`
    }).then(res => res.json())
    .then(data => {
      // 可选:上传成功后的提示逻辑,比如控制台打印或者页面弹窗
      console.log('上传成功', data);
    }).catch(err => {
      console.error('上传失败', err);
    })
  }
})

// 监听鼠标抬起事件,触发选中文本检测
document.addEventListener('mouseup', handleSelection);

提示:你可以根据需求调整防抖的延迟时间,避免误提交或者重复提交

二、后端PHP接口实现

PHP接口负责接收前端提交的选中文本,你可以根据自己的需求扩展后续处理逻辑(比如存入数据库、内容分析等)。

<?php
// 配置CORS头,解决跨域问题,如果前端和接口同域名可以删除这三行
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');

// 只处理POST请求
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  echo json_encode(['code' => 1, 'msg' => '请求方式错误']);
  exit;
}

// 获取提交的选中内容
$content = isset($_POST['content']) ? trim($_POST['content']) : '';
if (empty($content)) {
  echo json_encode(['code' => 2, 'msg' => '内容不能为空']);
  exit;
}

// 这里写你自己的业务逻辑,比如存入数据库、调用其他服务等
// 示例:写入本地文本文件
file_put_contents('./selected_texts.txt', date('Y-m-d H:i:s') . ' ' . $content . PHP_EOL, FILE_APPEND);

// 返回响应
echo json_encode(['code' => 0, 'msg' => '上传成功']);
exit;
?>

三、注意事项

  • 如果前端页面和PHP接口不在同一个域名下,必须正确配置CORS头,否则浏览器会拦截跨域请求
  • 生产环境使用建议给接口加签名校验、频率限制,避免被恶意调用
  • 如果你的站点是HTTPS协议,API接口也必须使用HTTPS,否则浏览器会拦截混合内容请求
  • 如果你需要获取选中内容所在的页面地址、选中位置等信息,可以在前端请求时额外提交对应的参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:57:00