还未起名 發表於 2026-2-9 11:37:00

用户单击文本并复制至剪帖板

Html5网页,一些内容,可以让用户点击选中文本,并把选中的文本复制至剪帖板(Clipboard)。<br>Insus.NET已经实现与测试,记录于此,方便时可以重来查阅与参考。<br><br>复制文本到剪贴板(兼容所有浏览器)<br><img src="https://img2024.cnblogs.com/blog/28036/202601/28036-20260126144012196-2009736584.jpg" alt="2026-01-26_14-21-30" loading="lazy">
<p>&nbsp;</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_d81dfec5-eac0-42b9-a596-2cf9f8ca099f" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_d81dfec5-eac0-42b9-a596-2cf9f8ca099f" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_d81dfec5-eac0-42b9-a596-2cf9f8ca099f" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> CopyTextToClipboard(text) {
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 方法1: 使用现代Clipboard API(首选)</span>
    <span style="color: rgba(0, 0, 255, 1)">if</span> (navigator.clipboard &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> window.isSecureContext) {
      </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> navigator.clipboard.writeText(text)
            .then(() </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">;
            })
            .</span><span style="color: rgba(0, 0, 255, 1)">catch</span>(err =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> FallbackCopyTextToClipboard(text);
            });
    }
    </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
      </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> FallbackCopyTextToClipboard(text);
    }
}</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
备用复制方法:<br><img src="https://img2024.cnblogs.com/blog/28036/202601/28036-20260126144417821-2120075038.jpg" alt="2026-01-26_14-41-46" loading="lazy"><br><br>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_bb939148-205f-4485-9a83-4fc24058d538" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_bb939148-205f-4485-9a83-4fc24058d538" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_bb939148-205f-4485-9a83-4fc24058d538" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> FallbackCopyTextToClipboard(text) {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">new</span> Promise((resolve, reject) =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
      const textArea </span>= document.createElement('textarea'<span style="color: rgba(0, 0, 0, 1)">);

      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置样式确保不可见但可选中</span>
      textArea.style.position = 'fixed'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.top </span>= '0'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.left </span>= '0'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.width </span>= '2em'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.height </span>= '2em'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.padding </span>= '0'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.border </span>= 'none'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.outline </span>= 'none'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.boxShadow </span>= 'none'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.background </span>= 'transparent'<span style="color: rgba(0, 0, 0, 1)">;
      textArea.style.opacity </span>= '0'<span style="color: rgba(0, 0, 0, 1)">;

      textArea.value </span>=<span style="color: rgba(0, 0, 0, 1)"> text;
      document.body.appendChild(textArea);

      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 选中文本</span>
<span style="color: rgba(0, 0, 0, 1)">      textArea.select();
      textArea.setSelectionRange(</span>0<span style="color: rgba(0, 0, 0, 1)">, textArea.value.length);

      </span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 尝试执行复制命令</span>
            const successful = document.execCommand('copy'<span style="color: rgba(0, 0, 0, 1)">);
            document.body.removeChild(textArea);

            </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (successful) {
                resolve(</span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">);
            } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
                reject(</span><span style="color: rgba(0, 0, 255, 1)">new</span> Error('复制失败'<span style="color: rgba(0, 0, 0, 1)">));
            }
      } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (err) {
            document.body.removeChild(textArea);
            reject(err);
      }
    });
}</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>选中元素内的文本(跨浏览器兼容)<br><img src="https://img2024.cnblogs.com/blog/28036/202602/28036-20260208131501070-466372182.png" alt="2026-02-08_13-10-45" loading="lazy"></p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_88b7972a-b831-4525-8a53-0922babef953" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_88b7972a-b831-4525-8a53-0922babef953" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_88b7972a-b831-4525-8a53-0922babef953" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> SelectText(element) {
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 如果元素本身是input或textarea,直接选中</span>
    <span style="color: rgba(0, 0, 255, 1)">if</span> (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA'<span style="color: rgba(0, 0, 0, 1)">) {
      element.select();
      </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)">;
    }

    </span><span style="color: rgba(0, 0, 255, 1)">var</span><span style="color: rgba(0, 0, 0, 1)"> sel, range;

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 现代浏览器</span>
    <span style="color: rgba(0, 0, 255, 1)">if</span> (window.getSelection &amp;&amp;<span style="color: rgba(0, 0, 0, 1)"> document.createRange) {
      sel </span>=<span style="color: rgba(0, 0, 0, 1)"> window.getSelection();
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (sel.toString() === '') { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 如果没有已选中的文本</span>
            window.setTimeout(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> () {
                range </span>=<span style="color: rgba(0, 0, 0, 1)"> document.createRange();
                range.selectNodeContents(element);
                sel.removeAllRanges();
                sel.addRange(range);
            }, </span>1<span style="color: rgba(0, 0, 0, 1)">);
      }
    }
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> IE 8及以下</span>
    <span style="color: rgba(0, 0, 255, 1)">else</span> <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (document.selection) {
      sel </span>=<span style="color: rgba(0, 0, 0, 1)"> document.selection.createRange();
      </span><span style="color: rgba(0, 0, 255, 1)">if</span> (sel.text === ''<span style="color: rgba(0, 0, 0, 1)">) {
            range </span>=<span style="color: rgba(0, 0, 0, 1)"> document.body.createTextRange();
            range.moveToElementText(element);
            range.select();
      }
    }
}</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>增强版单击复制函数,同时复制并选中<br><img src="https://img2024.cnblogs.com/blog/28036/202602/28036-20260208143503862-263760795.png" alt="2026-02-08_14-32-24" loading="lazy"></p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_5d31f876-c003-4203-b828-77a345b65fd5" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_5d31f876-c003-4203-b828-77a345b65fd5" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_5d31f876-c003-4203-b828-77a345b65fd5" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> CopyAndSelect(element) {
    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取要复制的文本</span>
    let textToCopy = ''<span style="color: rgba(0, 0, 0, 1)">;

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 根据元素类型获取文本</span>
    <span style="color: rgba(0, 0, 255, 1)">if</span> (element.tagName === 'INPUT' || element.tagName === 'TEXTAREA'<span style="color: rgba(0, 0, 0, 1)">) {
      textToCopy </span>=<span style="color: rgba(0, 0, 0, 1)"> element.value;
    } </span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)"> {
      textToCopy </span>= element.innerText ||<span style="color: rgba(0, 0, 0, 1)"> element.textContent;
    }

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 清理文本(去除首尾空格)</span>
    textToCopy =<span style="color: rgba(0, 0, 0, 1)"> textToCopy.trim();

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 如果有自定义属性,优先使用</span>
    <span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (element.dataset.copyValue) {
      textToCopy </span>=<span style="color: rgba(0, 0, 0, 1)"> element.dataset.copyValue;
    }

    </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 复制文本到剪贴板</span>
    CopyTextToClipboard(textToCopy).then(success =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
      </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (success) {
            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 选中元素文本(视觉反馈)</span>
<span style="color: rgba(0, 0, 0, 1)">            SelectText(element);

            </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 可选:添加视觉反馈样式</span>
            element.classList.add('copied'<span style="color: rgba(0, 0, 0, 1)">);
            setTimeout(() </span>=&gt;<span style="color: rgba(0, 0, 0, 1)"> {
                element.classList.remove(</span>'copied'<span style="color: rgba(0, 0, 0, 1)">);
            }, </span>1000<span style="color: rgba(0, 0, 0, 1)">);
      }
    }).</span><span style="color: rgba(0, 0, 255, 1)">catch</span>(err =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
      console.error(</span>'复制失败:'<span style="color: rgba(0, 0, 0, 1)">, err);
      </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 即使复制失败,也选中文本让用户可以手动复制</span>
<span style="color: rgba(0, 0, 0, 1)">      SelectText(element);
    });
}</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>把以上几个函数集合一起,另存成一个js脚本文件,在需要的地址,引用即可。<br>当然,你觉得有需要优化与修改的地方自行修改或者让Insus.NET知道。</p>


<br>下面写个示例:<br>样式,<br>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_b0f376ac-91f0-45c8-ba6f-0fc713bc6c79" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_b0f376ac-91f0-45c8-ba6f-0fc713bc6c79" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_b0f376ac-91f0-45c8-ba6f-0fc713bc6c79" class="cnblogs_code_hide">
<pre><span style="color: rgba(128, 0, 0, 1)">
    .click-to-copy </span>{<span style="color: rgba(255, 0, 0, 1)">
      cursor</span>:<span style="color: rgba(0, 0, 255, 1)"> pointer</span>;
    }<span style="color: rgba(128, 0, 0, 1)">

      .click-to-copy:hover </span>{<span style="color: rgba(255, 0, 0, 1)">
            background-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #f0f8ff</span>;<span style="color: rgba(255, 0, 0, 1)">
            border-color</span>:<span style="color: rgba(0, 0, 255, 1)"> #1890ff</span>;
      }</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><br>html,</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_5a0571e4-e10f-4dd4-85c1-5d1450017113" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_5a0571e4-e10f-4dd4-85c1-5d1450017113" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_5a0571e4-e10f-4dd4-85c1-5d1450017113" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">h3</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>单击复制示例<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">h3</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">table </span><span style="color: rgba(255, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">="width:60%;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">td </span><span style="color: rgba(255, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">="width:40%;border: 1px solid #b6ff00;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例1:普通文本 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="click-to-copy"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                ITEM-2026-301-663-237
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例2:带空格的文本 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="click-to-copy"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                ITEM 2026 301 663 237
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例3:混合格式 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="click-to-copy"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                PO-2026/01-001-A
            </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例4:使用自定义属性 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
                显示文本:</span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">spcn </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="click-to-copy"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>SPECIAL CODE 123 456<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">spcn</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>

            <span style="color: rgba(0, 128, 0, 1)">&lt;!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例5:表格中的单元格 </span><span style="color: rgba(0, 128, 0, 1)">--&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">table </span><span style="color: rgba(255, 0, 0, 1)">border</span><span style="color: rgba(0, 0, 255, 1)">="1"</span><span style="color: rgba(255, 0, 0, 1)"> cellpadding</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="margin-top: 20px;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>物料编码<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>描述<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">td </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="click-to-copy"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>MAT-001-2024<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>螺丝刀<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">td </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="click-to-copy"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>MAT-002-2024<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                  <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>扳手<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">table</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">td </span><span style="color: rgba(255, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">="border: 1px solid #b6ff00; padding:0px;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">textarea </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="TextArea1"</span><span style="color: rgba(255, 0, 0, 1)"> cols</span><span style="color: rgba(0, 0, 255, 1)">="50"</span><span style="color: rgba(255, 0, 0, 1)"> rows</span><span style="color: rgba(0, 0, 255, 1)">="12"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="border: none; width:100%;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">textarea</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">table</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
引用jquery和js脚本,<br>
<div class="cnblogs_code">
<pre>            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="../../Scripts/jquery-3.7.1.min.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="../JScripts/copyToClipboard.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<p><br>javascript,<br><img src="https://img2024.cnblogs.com/blog/28036/202602/28036-20260208164914147-1808205735.png" alt="2026-02-08_16-48-27" loading="lazy"></p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_035a6ea2-d00c-46c3-8897-e8c8c49e5027" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_035a6ea2-d00c-46c3-8897-e8c8c49e5027" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_035a6ea2-d00c-46c3-8897-e8c8c49e5027" class="cnblogs_code_hide">
<pre> $(document).ready(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> () {
   $(</span>".click-to-copy").click(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (e) {
         </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 防止事件冒泡到父元素</span>
<span style="color: rgba(0, 0, 0, 1)">         e.stopPropagation();

         </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 获取要复制的文本</span>
         <span style="color: rgba(0, 0, 255, 1)">var</span> textToCopy = $(<span style="color: rgba(0, 0, 255, 1)">this</span>).data('copy-value') || $(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">).text().trim();

         </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 复制到剪贴板</span>
         CopyTextToClipboard(textToCopy).then(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (success) {
             </span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (success) {
               </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 选中文本(视觉反馈)</span>
               SelectText(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);

               </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 添加视觉反馈</span>
               $(<span style="color: rgba(0, 0, 255, 1)">this</span>).addClass('copied'<span style="color: rgba(0, 0, 0, 1)">);
               setTimeout(</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> () {
                     $(</span><span style="color: rgba(0, 0, 255, 1)">this</span>).removeClass('copied'<span style="color: rgba(0, 0, 0, 1)">);
               }.bind(</span><span style="color: rgba(0, 0, 255, 1)">this</span>), 1000<span style="color: rgba(0, 0, 0, 1)">);
             }
         }.bind(</span><span style="color: rgba(0, 0, 255, 1)">this</span>)).<span style="color: rgba(0, 0, 255, 1)">catch</span>(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (err) {
             console.error(</span>'复制失败:'<span style="color: rgba(0, 0, 0, 1)">, err);
             </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 即使复制失败也选中文本</span>
             SelectText(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">);
         }.bind(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">));
   });
});</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>操作演示,<br><img src="https://img2024.cnblogs.com/blog/28036/202602/28036-20260209112625440-1202711184.gif" alt="c_text_c" loading="lazy"></p>
<p>&nbsp;</p>
<p>再做一个简单示例,<br><img src="https://img2024.cnblogs.com/blog/28036/202602/28036-20260209113630168-2116341470.png" alt="2026-02-09_11-32-21" loading="lazy"></p>
<p>&nbsp;</p>
<p>非纯javascript实现,得结合jquery一起。<br><br></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/insus/p/19520995
頁: [1]
查看完整版本: 用户单击文本并复制至剪帖板