1

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

<text here> - From <website name here>

我想知道如何做到这一点。我尝试过使用 alt 参数和其他参数。提前致谢。

4

1 回答 1

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);
});
于 2013-06-15T23:30:14.673 回答