Javascript实现复制功能,兼容所有浏览器问题及注意事项

Google source 开放了JavaScript代码: zeroclipboard  , 实现 "复制到剪切板"的功能,并支持所有浏览器.

测试案例: http://www.javbon.com/resources/zeroclipboard/test.html 

参考文档: http://code.google.com/p/zeroclipboard/wiki/Instructions

方法介绍:

1) 引入ZeroClipboard.js/ZeroClipboard.swf 2个文件即可.

   2个文件与对应的页面最好是放在同一目录, 如果不是同一目录, 则可能需要修改ZeroClipboard.js里面的 moviePath: 路径值. (js的相对路径没有处理好, 比较狗血)

2) 加入asp.net网页后, 出现Mathon浏览器反而不支持复制功能的情况, 并出现报错.

    解决方法是用try方法捕捉错误后, 用window.clipboardData.setData("Text", "text value")  代替.                          

参考代码:

                <script language="JavaScript">
                    var clip = new ZeroClipboard.Client();

                    clip.setText(''); // will be set later on mouseDown 
                    clip.setHandCursor(true);
                    clip.setCSSEffects(true);

                    clip.addEventListener('load', function(client) {
                        // alert( "movie is loaded" ); 
                    });

                    clip.addEventListener('complete', function(client, text) {
                        //alert("Copied text to clipboard: " + text);
                        alert("已复制成功到剪切板." );
                    });

                    clip.addEventListener('mouseOver', function(client) {
                        // alert("mouse over");  
                    });

                    clip.addEventListener('mouseOut', function(client) {
                        // alert("mouse out");  
                    });

                    clip.addEventListener('mouseDown', function(client) {
                        try{
                            // set text to copy here
                            clip.setText(document.getElementById('txtLogiName').value); 
                        }
                        catch (err) {
                            var clipBoardContent = document.getElementById("txtLogiName").value;
                            window.clipboardData.setData("Text", clipBoardContent);                             
                        }
                    
                        // alert("mouse down");  
                    });

                    clip.addEventListener('mouseUp', function(client) {
                        // alert("mouse up");  
                    });

                    clip.glue('d_clip_button'); 
                </script> 

  

感谢新浪博客文章提供参考: http://blog.sina.com.cn/s/blog_842f551e01019qn8.html

原文地址:https://www.cnblogs.com/gaoxihan/p/2919891.html