首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jquery中获取用户复制的文本并重写粘贴

在jquery中获取用户复制的文本并重写粘贴
EN

Stack Overflow用户
提问于 2013-04-26 21:49:11
回答 2查看 1.3K关注 0票数 4

我正在尝试让用户复制文本,并重写他们粘贴的内容。

示例...

代码语言:javascript
复制
<p>This is some awesome text that i wrote</p>

假设用户复制了“words”

我想用“棒极了的文字”加上“--来自我的mywebsite.com”

所以现在当用户粘贴从我的网站复制的文本时,它会说,“很棒的文本-来自我的mywebsite.com”

我已经在谷歌上搜索过了,这是我到目前为止得到的,http://jsfiddle.net/YD88T/

EN

回答 2

Stack Overflow用户

发布于 2013-04-26 22:01:46

也许这段代码可以做到这一点。在用户实际复制文本之前,它会将文本附加到用户选择中。

代码语言:javascript
复制
jQuery.fn.addtocopy = function(usercopytxt) {
    var options = {htmlcopytxt: '<br>More: <a href="'+window.location.href+'">'+window.location.href+'</a><br>', minlen: 25, addcopyfirst: false}
    $.extend(options, usercopytxt);
    var copy_sp = document.createElement('span');
    copy_sp.id = 'ctrlcopy';
    copy_sp.innerHTML = options.htmlcopytxt;
    return this.each(function(){
        $(this).mousedown(function(){$('#ctrlcopy').remove();});
        $(this).mouseup(function(){
            if(window.getSelection){    //good times
                var slcted=window.getSelection();
                var seltxt=slcted.toString();
                if(!seltxt||seltxt.length<options.minlen) return;
                var nslct = slcted.getRangeAt(0);
                seltxt = nslct.cloneRange();
                seltxt.collapse(options.addcopyfirst);
                seltxt.insertNode(copy_sp);
                if (!options.addcopyfirst) nslct.setEndAfter(copy_sp);
                slcted.removeAllRanges();
                slcted.addRange(nslct);
            } else if(document.selection){  //bad times
                var slcted = document.selection;
                var nslct=slcted.createRange();
                var seltxt=nslct.text;
                if (!seltxt||seltxt.length<options.minlen) return;
                seltxt=nslct.duplicate();
                seltxt.collapse(options.addcopyfirst);
                seltxt.pasteHTML(copy_sp.outerHTML);
                if (!options.addcopyfirst) {nslct.setEndPoint("EndToEnd",seltxt); nslct.select();}
            }
        });
  });
}

我已经从这里开始了:http://naviny.by/js/main.min.js

demo (选择至少25个字符)

票数 2
EN

Stack Overflow用户

发布于 2013-04-26 21:58:57

如果您是网站的开发人员,

代码语言:javascript
复制
  <p>This is some awesome text that i wrote</p> 

您可以创建一个脚本来捕获右键单击事件,用您自己创建的菜单替换普通菜单,还可以捕获ctrl+c组合并从中执行任何您想做的事情。

如果你不是..。你不能这么做。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16238142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档