用户单击文本并复制至剪帖板
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> </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 &&<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>=><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 =><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> </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) =><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> </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> </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 &&<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> </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> </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 =><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>=><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 =><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> </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)"><</span><span style="color: rgba(128, 0, 0, 1)">h3</span><span style="color: rgba(0, 0, 255, 1)">></span>单击复制示例<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">h3</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例1:普通文本 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span><span style="color: rgba(0, 0, 0, 1)">
ITEM-2026-301-663-237
</span><span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例2:带空格的文本 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span><span style="color: rgba(0, 0, 0, 1)">
ITEM 2026 301 663 237
</span><span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例3:混合格式 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span><span style="color: rgba(0, 0, 0, 1)">
PO-2026/01-001-A
</span><span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例4:使用自定义属性 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="color: rgba(0, 0, 0, 1)">
显示文本:</span><span style="color: rgba(0, 0, 255, 1)"><</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)">></span>SPECIAL CODE 123 456<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">spcn</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)"> 示例5:表格中的单元格 </span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">></span>物料编码<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">></span>描述<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">th</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>MAT-001-2024<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>螺丝刀<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>MAT-002-2024<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>扳手<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">table</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></</span><span style="color: rgba(128, 0, 0, 1)">textarea</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">table</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p> </p>
引用jquery和js脚本,<br>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</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)">></</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">></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> </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> </p>
<p>操作演示,<br><img src="https://img2024.cnblogs.com/blog/28036/202602/28036-20260209112625440-1202711184.gif" alt="c_text_c" loading="lazy"></p>
<p> </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> </p>
<p>非纯javascript实现,得结合jquery一起。<br><br></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/insus/p/19520995
頁:
[1]