在知乎复制的文本为什么会自带一些版权声明,这个功能是如何实现的?

阅读 4.8k
评论
    3 个回答

    直接贴代码吧,兼容各种浏览器,还解决了换行问题~

    <script language="javascript" type="text/javascript">
    jQuery(document).on('copy', function(e)
        {
          var selected = window.getSelection();
          var selectedText = selected.toString().replace(/\n/g, '<br>');  // Solve the line breaks conversion issue
          var copyFooter = '<br>---------------------<br>著作权归作者所有。<br>' 
                                + '商业转载请联系作者获得授权,非商业转载请注明出处。<br>'
                                + '作者:Bravo Yeung<br> 源地址:' + document.location.href
                                + '<br>来源:博客园cnblogs<br>© 版权声明:本文为博主原创文章,转载请附上博文链接!';
          var copyHolder = $('<div>', {id: 'temp', html: selectedText + copyFooter, style: {position: 'absolute', left: '-99999px'}});
            
          $('body').append(copyHolder);
          selected.selectAllChildren( copyHolder[0] );
          window.setTimeout(function() {
              copyHolder.remove();
          },0);
        });
    </script>

    顺手测了一下csdn的手动复制功能(非代码上方"复制按钮"),果然换行失败:

    clipboard.png

    首发于本文博客园博客:
    前端小白也能快速学会的博客园博客美化全攻略_附源码 - Enjoy233 - 博客园.

    知乎上复制回答,剪贴板里自动加上版权出处的技术js如何实现? - 知乎

    How do I copy to the clipboard in JavaScript? - Stack Overflow.