复制到剪贴板的实现方法有很多,在本文将为大家详细介绍下使用 js 是如何实现的,感兴趣的朋友不要错过
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
- /*
- * 复制到剪贴板
- *
- * */
- function copyToClipboard(txt) {
- if(window.clipboardData) {
- window.clipboardData.clearData();
- window.clipboardData.setData("Text", txt);
- } else if(navigator.userAgent.indexOf("Opera") != -1) {
- window.location = txt;
- } else if (window.netscape) {
- try {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- } catch (e) {
- showAlert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
- }
- var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
- if (!clip)
- return;
- var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
- if (!trans)
- return;
- trans.addDataFlavor('text/unicode');
- var str = new Object();
- var len = new Object();
- var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
- var copytext = txt;
- str.data = copytext;
- trans.setTransferData("text/unicode",str,copytext.length*2);
- var clipid = Components.interfaces.nsIClipboard;
- if (!clip)
- return false;
- clip.setData(trans,null,clipid.kGlobalClipboard);
- showMessage("复制成功!");
- }else if(window.navigator.userAgent.indexOf("Chrome") !== -1 ){
- var dialog = $("#sanwn_clipboardDialog");
- if(dialog.length==0){
- var text = "<div id='xxx_clipboardDialog' title='请按Ctrl+C复制内容到剪贴板'><input type='text' id='sanwn_clipboardTxt' value='"+txt+"'></div>";
- $("body").append( $(text));
- $("#sanwn_clipboardDialog").omDialog({
- autoOpen: false,
- height: 140,
- modal: true
- });
- dialog =$( "#sanwn_clipboardDialog");
- }
- $("#sanwn_clipboardTxt").val(txt);
- $("#sanwn_clipboardDialog").omDialog("open");
- document.getElementById("sanwn_clipboardTxt").select();
- }
- }
来源: