javascript 实现跨浏览器的粘贴,复制,剪切功能(转)

这两天在做跨浏览器的粘贴、复制、剪切功能。

本以为是很简单的事,原来并不简单。

网上查了很多资料。都是跨浏览器把文本复制到剪切板的实现方案(zero clipboard.js)。没有跨浏览器粘贴的。

后来想到,能不能不用剪切板,而是纯js。用一个全局变量存放选中的文本,再在光标所在处粘贴。

网上一查,有类似的例子。于是小修下,分享之。

可以兼容ie789 chrome firefox safari等

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>copy&past</title>
<script type="text/javascript"> 
var selecttext=""; 
function InsertString(tbid){
    var str = selecttext;
    var tb = document.getElementById(tbid);
    tb.focus();
    if (document.all){
        var r = document.selection.createRange();
        document.selection.empty();
        r.text = str;
        r.collapse();
        r.select();
    }
    else{
        var newstart = tb.selectionStart+str.length;
        tb.value=tb.value.substr(0,tb.selectionStart)+str+tb.value.substring(tb.selectionEnd);
        tb.selectionStart = newstart;
        tb.selectionEnd = newstart;
    }
}
function GetSelection(tbid){

    var sel = '';
    if (document.all){
        var r = document.selection.createRange();
        document.selection.empty();
        sel = r.text;
    }
    else{
    	var tb = document.getElementById(tbid);
    	   // tb.focus();
        var start = tb.selectionStart;
        var end = tb.selectionEnd;
        sel = tb.value.substring(start, end);
    }
    return sel;
}
function ShowSelection(tbid){
	var sel = GetSelection(tbid);
    if (sel){
        alert('你选中的文本是 : '+sel);
         selecttext=sel;
    }else {
        alert('未选中文本');
    }
}
</script>
</head>
<body>
    <form><textarea id="txtContent" cols="50" rows="5">这里是一些内容,你可以测试复制和粘贴
http://witmax.cn</textarea><br /><br />
    
    <input type = "button" value = "复制" onclick="ShowSelection('txtContent');"/><br />
    <input type = "button" value = "粘贴" onclick="InsertString('txtContent');"/>
    <div id="tip"></div>
    </form>
   
</body>
</html>

转载于:https://my.oschina.net/suyewanwan/blog/80502

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值