如何使文本或其他元素复制除此之外的其他内容?

时间:2013-06-15 23:10:20

标签: html copy-protection

我看过几个网站,当你从他们的网站上复制和粘贴文字时,结果是这样的:

<text here> - From <website name here>

我想知道该怎么做。我尝试过使用alt参数和其他参数。提前谢谢。

1 个答案:

答案 0 :(得分:0)

这并不像看起来那么简单。我之前已经这样做了所以我将告诉你如何使用jquery和rangy选择库(https://code.google.com/p/rangy/

基本上你这样做:

  • 采取当前选择
  • 将其复制到一些不可见的元素中
  • 在该元素上添加您的文字
  • 选择不可见元素
  • 使用setTimeout
  • 恢复选择状态

这是一个小提琴和代码:

http://jsfiddle.net/P4yfw/

$("body").on("copy", function() {
    var selection = rangy.getSelection();
    var ranges = selection.getAllRanges();
    var container = $("<div>");

    for (var i = 0; i < ranges.length; i++)
        container.append(ranges[i].cloneContents());

    container.append(" - whatever text you want to append");

    var wnd = $(window);
    var scrollTop = wnd.scrollTop();
    var scrollLeft = wnd.scrollLeft();

    var offscreen = $("<div>").css({
        position: "absolute",
        left: "-1000px",
        width: "1px",
        height: "1px",
        overflow: "hidden"
    }).appendTo("body");

    offscreen.css({ top: scrollTop });
    offscreen.append(container);

    selection.selectAllChildren(container[0]);
    event.stopPropagation();

    setTimeout(function() {
        selection.setRanges(ranges);
        offscreen.detach(); // offscreen.remove() will remove events attached to the original elements (not cloned elements) on IE8
        wnd.scrollTop(scrollTop);
        wnd.scrollLeft(scrollLeft);
    }, 0);
});