jQuery在选择上附加文本,但保持突出显示并避免在textareas和输入框上

时间:2015-01-19 02:47:58

标签: javascript jquery html

我在此处使用此代码段https://stackoverflow.com/a/24631278/1447613

    $(document).on('copy', function(e) {
      var seltxt = window.getSelection();
      var copyFooter = '<br /><br />Read more: ' + document.location.href + '<br />';
      var copyHolder = $('<div>', { html: seltxt+copyFooter, style:{ position: 'absolute', left: '-99999px' } });
      $('body').append(copyHolder);
      seltxt.selectAllChildren( copyHolder[0] );
      window.setTimeout(function(){copyHolder.remove();},0);
    });

在复制操作的选择中附加附加文本是做什么的,但它缺少两个主要特征:

  • 即使我们从textarea或输入字段中选择它也会复制,在我的情况下,它根本没用。

  • 它会在复制后删除突出显示的文本,这不是浏览器的默认行为,因此在初次使用时可能会令人烦恼。

对于第一个问题,我没有深入研究,因为我不知道如何避免textareas或输入框上的函数行为。幸运的是,有人可以指出我正确的方向。

关于第二个问题,我试图在最后加上这个:

seltxt.select();

也尝试过:

seltxt.focus().select();

两者都没有成功。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这应该有效:

$(document).on('copy', function(e) {
    var ignore = "input, textarea"
    var seltxt = window.getSelection();
    if ($(e.target).is(ignore)) {
        return;
    }
    $("<div />", {
        html: seltxt + "<br /><br />Read more: " + document.location.href + "<br />",
        appendTo: "body",
        style: {
            position: "absolute",
            left: "-99999px"
        }
    });
});