• 注册
  • 科技 科技 关注:1 内容:35

    WordPress技巧:复制文字代码自动添加版权信息

  • 查看作者
  • 打赏作者
    • 科技
    • 4
      普通会员
      官方

      现在的社会越来越注重版权了,在百度搜索图片时,有版权的图片都会显示“版权”二字。有时候我们辛辛苦苦敲出来的文字,别人不打个招呼就拿走了,实在不厚道。所以写了下面这段提醒代码,可以自动跟在所复制文字的后面,虽然还是可以删掉,但是提醒一下总归有好处吧。

      一般情况下,你百度出来的信息是这样的:打开wordpress模版里面的functions.php文件,把下面的代码放到最后面即可:

      //复制文字自动添加版权信息
      function nc_copyright() {
         ?>
         <script type='text/javascript'>
             function addLink() {
                 var body_element = document.getElementsByTagName('body')[0];
                 var selection;
                 selection = window.getSelection();
                 var pagelink = "<br /><br /> 本文来源于:<?php bloginfo('name'); ?><br />原文标题: <?php if(is_single()){ the_title();}?><br />  原文链接:<a href='"+document.location.href+"'>"+document.location.href+"</a>";
                 var copy_text = selection + pagelink;
                 var new_div = document.createElement('div');
                 new_div.style.left='-99999px';
                 new_div.style.position='absolute';
                 body_element.appendChild(new_div );
                 new_div.innerHTML = copy_text ;
                 selection.selectAllChildren(new_div );
                 window.setTimeout(function() {
                     body_element.removeChild(new_div );
                 },0);
             }
             document.oncopy = addLink;
         </script>
         <?php
      }
      add_action( 'wp_head', 'nc_copyright');

      原理就是,新建一个div,把选择的内容放到代码块的作用这个新建的div里的时候加上了版权信息,然后选中里面的内容。这一系列操作是你进行复制的时候激活的。不过这段代码块执行顺序代码有个弊端,就是复制代码块执行顺序的内容有JS语句时不生效。原因就是js代码只能在代码模式下代码块是什么意思看到,所以没法选择。我用textarea解决了这个问题,代码如下:

      //复制文字自动添加版权信息
      function nc_copyright() {
         ?>
         <script type='text/javascript'>
             function addLink() {
                 var body_element = document.getElementsByTagName('body')[0];
                 var selection;
                 selection = window.getSelection();
                 var pagelink = "
      本文来源于:<?php bloginfo('name'); ?>
      原文标题: <?php if(is_single()){ the_title();}?>
      原文链接:<a href='"+document.location.href+"'>"+document.location.href+"</a>";
                 var copy_text = selection + pagelink;
                 var new_div = document.createElement('textarea');
                 new_div.style.left='-99999px';
                 new_div.style.position='absolute';
                 body_element.appendChild(new_div );
                 new_div.value = copy_text;
                 new_div.select();
                 window.setTimeout(function() {
                     body_element.removeChild(new_div );
                 },0);
             }
             document.oncopy = addLink;
         </script>
         <?php
      }
      add_action( 'wp_head', 'nc_copyright');

      原理都是一样的,下面的代码也可以实现,记得在前面引入jQuery:

      <script>
      $("body").bind('copy', function (e) {
      if (typeof window.getSelection == "undefined") return; //IE8 及更老的版本不兼容
      var body_element = document.getElementsByTagName('body')[0];
      var selection = window.getSelection();
      //如果选择是短的内容,让我们不要打扰我们的用户
      if (("" + selection).length < 30) return;
      //创建一个DIV的可见区域之外
      //并填写选定的文本
      var newdiv = document.createElement('div');
      newdiv.style.position = 'absolute';
      newdiv.style.left = '-99999px';
      body_element.appendChild(newdiv);
      newdiv.appendChild(selection.getRangeAt(0).cloneContents());
      //我们需要<pre>标签解决方案
      //其他的文本在<pre>失去了所有的行符!
      if (selection.getRangeAt(0).commonAncestorContainer.nodeName == "PRE") {
      newdiv.innerHTML = "<pre>" + newdiv.innerHTML + "</pre>";
      }
      newdiv.innerHTML += "<br /><br />文章来自: 网站名称() 详文参考:<a href='"
      + document.location.href + "'>"
      + document.location.href + "</a>";
      selection.selectAllChildren(newdiv);
      window.setTimeout(function () { body_element.removeChild(newdiv); }, 200);
      });
      </script>

      请登录之后再进行评论

      登录
      自助推广购买
    • 分享给朋友

    • 发表内容
    • 做任务
    • 客服
    • 还没有账号?点这里立即注册