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

如何在JavaScript中获取Google Drive复制列表的项目符号?

解决Google Drive列表项目符号无法通过剪贴板纯文本读取的问题

问题核心在于navigator.clipboard.readText()只能读取剪贴板里的纯文本格式数据。Google Drive复制的带项目符号列表,其纯文本版本里没有包含项目符号,但剪贴板中同时存在富文本(如HTML、RTF)格式的数据——这些格式保留了列表结构和项目符号信息,这也是复制到Word能显示符号的原因。

要获取项目符号,需要改用navigator.clipboard.read()读取剪贴板的所有可用格式,筛选出富文本格式后解析转换:

实现步骤

  • 调用read()获取剪贴板的所有数据项
  • 筛选出HTML格式的数据(Google Drive复制的列表通常包含该格式)
  • 解析HTML内容,提取列表项并添加对应项目符号
  • 转换为带符号的文本输出

示例代码

async function getClipboardWithBullets() {
  try {
    const items = await navigator.clipboard.read();
    for (const item of items) {
      // 检查是否存在HTML格式数据
      if (item.types.includes('text/html')) {
        const blob = await item.getType('text/html');
        const html = await blob.text();
        
        // 创建临时DOM元素解析HTML
        const tempDiv = document.createElement('div');
        tempDiv.innerHTML = html;
        
        // 提取所有列表项并生成带符号的文本
        const listItems = tempDiv.querySelectorAll('li');
        let result = '';
        
        listItems.forEach(li => {
          const parentTag = li.parentElement.tagName.toLowerCase();
          // 无序列表用•,有序列表用序号
          const bullet = parentTag === 'ul' ? '• ' : `${Array.from(li.parentElement.children).indexOf(li) + 1}. `;
          result += `${bullet}${li.textContent.trim()}\n`;
        });
        
        console.log(result);
        return result;
      }
    }
    // 无HTML格式时降级读取纯文本
    const plainText = await navigator.clipboard.readText();
    console.log(plainText);
    return plainText;
  } catch (err) {
    console.error('读取剪贴板失败:', err);
  }
}

// 执行函数
getClipboardWithBullets();

说明

  • 优先读取HTML格式数据,解析列表结构后手动补全项目符号
  • 自动区分无序列表和有序列表,匹配对应符号样式
  • 兼容原有纯文本读取场景,确保无HTML格式时仍能正常输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:42:07