js脚本实现自由复制百度文库文字

2 篇文章 1 订阅

这几天查看百度文库的文档,当复制部分文字的时候发现百度文库对文本复制做了长度限制,而开通VIP则略显不必要,同时也为了复习下js脚本制作,这里制作一个能够自由复制文库文字的脚本。

分析了下百度文库的限制方式,目测是通过js重写覆盖了默认的 ctrl+c 的方法并限制了复制的文字长度,因此原来的基本思路就是自己重写一个方法再次覆盖 ctrl+c 指令并将复制的内容直接复制到粘贴板上,但是脚本做好之后发现只有当全屏文档之后才能复制到粘贴板上且复制后的格式很乱,这里是调动了document.execCommand('copy')方法,网上查找了下该方法的用法但仍旧无法解决,如果有哪位大神知道失效原因的话还请不吝赐教。

既然上面的方法不行,那么改用将选中的文字显示出来再复制即可,因此这里的解决办法是 ctrl+c 之后将选中的文字放入自己创建的textarea中,效果有点类似alert。具体代码如下:

  var isopen = false;
  window.onload = function () {
    var title = document.title;
    if (title.indexOf('百度文库') != -1) {
      window.document.onkeydown = newKeyDown;

      function newKeyDown(evt) {
        evt = (evt) ? evt : window.event
        if (evt.keyCode) {
          if (evt.ctrlKey && evt.keyCode == 67) {
            if (isopen) {
			  document.execCommand('copy');
              document.body.removeChild(document.getElementById("cover"));
              document.body.removeChild(document.getElementById("dialog"));
              isopen = false;
            } else {
              show(window.getSelection());
            }
          }
        }
      }
    }
  }

  function show(content) {
    isopen = true;
    var page_width = document.documentElement.scrollWidth;
    var page_height = document.documentElement.scrollHeight;
    var b_width = document.documentElement.clientWidth;
    var b_height = document.documentElement.clientHeight;
    var cover = document.createElement("div");
    cover.id = "cover";
    cover.style = 'background-color: black;opacity: 0.3;position: absolute;top: 0px;left: 0px;z-index: 99990;width:' + page_width + 'px;height:' + page_height + 'px';
    document.body.appendChild(cover);
    var dialog = document.createElement("div");
    dialog.id = "dialog";
    dialog.style.left = (b_width - 400) / 2 + "px";
    dialog.style.top = ( b_height - 300) / 2 + "px";
    dialog.style = 'width: 400px;height: 300px;background-color: white;position: fixed;z-index: 99999;left: 39%;top: 200px;border-radius: 5px;'
    var ku = document.body.appendChild(dialog);
    ku.innerHTML += '<textarea style="width:90%;height:90%;margin-left: 4.5%;margin-top: 3%">' + content.toString().replace(new RegExp(' ', 'g'), '&#10;') + '</textarea>';
    document.getElementById("cover").onclick = function () {
      document.body.removeChild(cover);
      document.body.removeChild(dialog);
    }
  }

将这段代码封装成js然后放入扩展插件那里就可以了,如不清楚可参考这里

不想自己弄的也可以戳这里下载直接使用。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值