use*_*846 10 javascript jquery html5 clipboard.js
当前代码附加一个按钮,可以快速选择<pre>标记中的某些代码.我想要添加的是能够将该内容复制到剪贴板并将按钮文本更改为"复制".
如何通过修改下面的当前工作代码来实现它?我不介意使用clipboard.js,jQuery位或者只是原生的JS支持,因为它是从Chrome 43开始引入的.我只是不知道如何继续添加我需要的东西.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,selectPre在 jsfiddle 上重现案例时确实找不到您的函数。Jsfiddle 可能会删除它认为是死代码的内容,或者为了缩小而重命名它。
但是,如果它所做的是选择标签的内容<pre>,则Clipboard.js库(您已准备好使用)已经可以自行完成此操作。
因此,您最终需要正确配置 Clipboard 对象。使用那个:
new Clipboard('.btn', {
// The targeting to the correct content is done here.
target: function(trigger) {
return trigger.parentNode.nextSibling;
}
// clipboard.js will take the entire inner content of the <pre>,
// I think this is what you are trying to do in your "selectPre"
// function, but I am not sure.
});
Run Code Online (Sandbox Code Playgroud)
它模仿您selectPre(this.parentNode.nextSibling),您不再需要附加到onclick按钮的属性。
演示: http: //jsfiddle.net/5k60nm1y/
请注意,我必须猜测你的表结构是什么。它可能与您的实际表格不同,因此您可能需要微调分配newdiff给正确单元格的方式。
如果您需要的东西比标记的内部内容更复杂,您可以通过将自定义函数传递给Clipboard 构造函数选项的属性(而不是使用该属性<pre>)来微调 Clipboard 对象的行为。检查剪贴板主页,这是很不言自明的。texttarget
正如 Zac 所提到的,如果您可以共享 HTML 表格,您将使人们的任务变得更容易(并且您可能会更快地收到解决方案)。我不需要猜测并创建一个假的。此外,我向您提供的代码将直接适用于您的真实表,而现在它可能仍然需要定制。希望我猜对了,而且我的桌子离你的很近。
| 归档时间: |
|
| 查看次数: |
802 次 |
| 最近记录: |