繁体   English   中英

单击复制或突出​​显示<code>to clipboard</code>

[英]onclick copy or highlight <code> to clipboard

当用户单击任何<code>元素时,它将自动突出显示其中的所有内容并复制到剪贴板。 我正在写文章,并且有很多用于SSH的复制/粘贴命令。 如果能为访问者节省数十次点击,那将是很好的。 我在尝试以下代码时收到此错误:

这是我收到的错误

$(function () {
    $(document).on('click', 'code', function () {
        this.select();
    });
});

我用markdown写这些文章,当我导出时,这只是干净的代码。 如果我不必使用Flash或在html中添加类或ID,我会希望使用。 相反,只需假设<code>所有内容都应在单击时复制到剪贴板。

我也尝试过这个,但是还是没有运气。

<script type="text/javascript">
$('code').focus(function () {
  this.select();
  this.setSelectionRange(0, 9999);
}).mouseup(function (e) {
  e.preventDefault();
});
</script>

资源

单击时选择HTML文本输入中的所有文本

http://jsfiddle.net/NNqyF/

唯一的方法是创建一个复制了内容的杜比文本区域,然后删除该文本区域。

 $(function () { $(document).on('click', 'code', function () { $(this).addClass("active") textarea = $("<textarea>").val($(this).html()).height(0).appendTo(document.body).select(); document.execCommand('copy'); textarea.remove(); }); }); 
 code { background: #555; color:white; } .active { background:#3399ff; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <code>test2</code> 

我只在chrome中测试过,但是您可以执行以下操作:

$('code').on('click', function(e){
  var sel = window.getSelection()
  var r = document.createRange()
  r.selectNodeContents(e.target.closest('code'))
  sel.removeAllRanges()
  sel.addRange(r)
  document.execCommand('copy')
})

它可以满足您的需求。 应归功于以下答案: 如何使用JavaScript复制到剪贴板? https://stackoverflow.com/a/2838358/6872682

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM