文章内容复制javascript自动增加出处来源

  复制文章内容时,用javascript自动向复制的区域增加浏览器地址栏url地址。

  纯javascript实现,不需要任何插件。

 

实现原理:在copy事件中,javascript通过修改selection实现内容复制,先将用户当前选中的内容复制到一个容器里面,让后移除当前用户选择,将容器的内容选中。

  测试代码如下

<script>
    /*文章内容复制javascript自动增加出处来源(article content copy auto add Source)
    *author:showbo,http://www.w3dev.cn,使用请保留出处
    */
    var copypaste = {
        copyPasteInit: function () {
            var a = document.getElementsByTagName("body")[0];
            var c = document.createElement("div"); //内容容器对象,用来放置用户已经选中的内容
            c.style.position = "absolute";
            c.style.top = "-1999px";
            c.style.left = "-1988px";
            a.appendChild(c);
            if (document.addEventListener) {//标准浏览器
                a.addEventListener("copy", function (k) {
                    var h = document.getSelection();
                    if (h.isCollapsed) return;
                    var g = h.getRangeAt(0).cloneContents();
                    c.appendChild(g);
                    if (c.textContent.trim().length == 0) return;
                    c.innerHTML = copypaste.selectionModify(h);
                    var f = document.createRange();
                    f.selectNodeContents(c);
                    h.removeAllRanges(); h.addRange(f);
                    setTimeout(function () { h.removeAllRanges() },0);
                }, false);
            } else if (document.selection) {//IE
                document.body.oncopy = function () {
                    var sel = document.selection, r = sel.createRange();
                    c.innerHTML = copypaste.selectionModify(r.htmlText);
                    sel.empty();
                    r = document.body.createTextRange();
                    r.moveToElementText(c);
                    r.select();
                    setTimeout(function () { sel.empty(); }, 0);
                }
            }
        },
        selectionModify: function (q, n) {//增加来源内容
            var note = '&#26356;&#22810;&#20449;&#24687;&#35831;&#26597;&#30475;&#65306;'; //内容为“更多信息请查看”,防止乱码修改为unicode编码字符
            return q.length < 10 ? q : q + "<br/>" + note + "<a href='" + location.href + "'>" + location.href + "</a>";
        }
    };
    if (window.addEventListener) window.addEventListener('load', copypaste.copyPasteInit, false);
    else if (window.attachEvent) window.attachEvent('onload', copypaste.copyPasteInit);
</script>
复制文章内容时,用javascript自动向复制的区域增加浏览器地址栏url地址。纯javascript实现,不需要任何插件。在copy事件中,javascript通过修改selection实现内容复制,先将用户当前选中的内容复制到一个容器里面,让后移除当前用户选择,将容器的内容选中。

 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:文章内容复制javascript自动增加出处来源

评论(0)Web开发网
阅读(104)喜欢(0)JavaScript/Ajax开发技巧