【发布时间】:2016-01-18 00:06:26
【问题描述】:
当前代码附加了一个按钮,用于快速选择<pre> 标记中的一些代码。我要添加的是能够将该内容复制到剪贴板并将按钮文本更改为“已复制”。
如何通过修改下面的当前工作代码来实现它?我不介意使用自 Chrome 43 以来引入的 clipboard.js、jQuery 位或仅支持原生 JS。我只是不知道如何从这里继续添加我需要的内容。
function selectPre(e) {
if (window.getSelection) {
var s = window.getSelection();
if (s.setBaseAndExtent) {
s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
}
else {
var r = document.createRange();
r.setStart(e.firstChild, 0);
r.setEnd(e.lastChild, e.lastChild.textContent.length);
s.removeAllRanges();
s.addRange(r);
}
}
else if (document.getSelection) {
var s = document.getSelection();
var r = document.createRange();
r.selectNodeContents(e);
s.removeAllRanges();
s.addRange(r);
}
else if (document.selection) {
var r = document.body.createTextRange();
r.moveToElementText(e);
r.select();
}
}
var diff = document.getElementById('diff_table').getElementsByTagName('tr');
var difflen = diff.length;
for(i=0; i<difflen; i++) {
var newdiff = diff[i].childNodes[1];
if (newdiff.className && (newdiff.className == 'added' || newdiff.className == 'modified')) {
newdiff.className += ' diff-select';
newdiff.innerHTML = '<div class="btnbox"><button class="btn btn-default btn-xs" onclick="selectPre(this.parentNode.nextSibling)">Select</button></div>' + newdiff.innerHTML;
}
}
【问题讨论】:
-
能否添加相关的html示例?
-
请添加与实际尝试使用
clipboard.js或您提到的其他解决方案之一相关的相关代码。现在看起来就像你把代码交给我们并要求我们向其中注入解决方案。 -
是的,这就是目的。如果我有解决方案,我就不会在这里 :) 当前代码有效(它在点击时选择代码),我缺少的是复制到剪贴板的内容和点击时“复制”的文本。
-
我尝试复制一个 jsfeedle 但它不起作用。它出现时未定义。但是代码在我的服务器上运行良好。
标签: javascript jquery html clipboard.js