您的位置:首页 > Web前端 > JavaScript

JS实现文本复制功能,兼容主流浏览器

2015-03-15 19:02 435 查看
声明:本文是经过多方搜索、整理而成。转载至http://my.oschina.net/ichendong/blog/316493

最近工作很烦心,为了让自己冷静下来,开始把平时碰到的问题、知识点以博客的形式记录下来,分享给一线的战友们!

不是你不能,而是你对自己的要求太低
-------------------------------------------------------不罗嗦了,进入正题,完美分割-------------------------------------------------------------

jQuery-zclip是一个复制内容到剪贴板的jQuery插件,使用它我们不用考虑不同浏览器和浏览器版本之间的兼容问题。jQuery-zclip插件需要Flash的支持,使用时记得电脑安装Adobe
Flash Player。

加载jQuery和zClip,地址请根据各自的存放地址做相应修改。
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.zclip.min.js"></script>


js实现点击复制的代码(本地测试无法使用,上传到服务器测试)
$(function(){
    $('#copy_input').zclip({
        path: 'js/ZeroClipboard.swf',
        copy: function(){ //复制内容
            return $('#mytext').val();
        },
        afterCopy: function(){ //复制成功
            $("<span id='msg'/>").insertAfter($('#copy_input')).text('复制成功');
        }
    });
});


需要注意如果是复制的内容来自输入框input、textarea等,copy对象使用:
copy: function(){
    return $('#mytext').val();
}


如果是复制的内容来自页面元素div、p之类的,copy对象使用:
copy: $('#mytext').text();


配置说明

path:swf的路径(复制主要是用flash解决不同浏览器的复制)
copy:待复制的内容, 可以是静态内容, 也可以 return 动态内容
beforeCopy:复制之前要做的function;
afterCopy:复制之后要做的function;


提供了3个方法
show:$(selected).zclip('show'); //复制功能有效
hide:$(selected).zclip('hide'); //复制功能无效
remove:$(selected).zclip('remove'); //完全移除复制功能


第二种:转载 http://www.daimajiayuan.com/sitejs-17973-1.html

网上一搜一大堆,单纯使用js方法也不是没有,但是由于各浏览器的安全机制不同,不是跨浏览器的。去看了几个常用的网站,都是用的透明flash遮挡“复制到剪贴板”按钮,所以当你点击“复制到剪贴板”的时候,点击的其实是flash,然后把你需要复制的内容传入到了flash,然后在通过flash的复制功能把传入的内容复制到了剪贴板。

加载JQuery库和zclip插件
<script type="text/javascript" src="http://www.daimajiayuan.com/templets/skins/js/jquery-1.8.1.min.js"></script> 
<script src="http://www.daimajiayuan.com/member/templets/js/jquery.zclip.min.js"></script> 

下面是一个小demo,主要是复制文本框中的链接到剪贴板。

HTML
<input type="text" value="www.baidu.com" id="link"> 
<span id="copyBtn">复制链接</span> 

然后加入脚本
<script> 
        $('#copyBtn').zclip({ 
            path: "ZeroClipboard.swf", 
            copy: function(){ 
                return $('#link').val(); 
        } 
        }); 
</script> 

以上都须要在服务环境才能测试。不懂怎么回事!知道的朋友可以解答一下,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 复制 兼容