支持ie与FireFox的剪切板操作代码

复制代码 代码如下:

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <title>支持ie与FireFox的剪切板代码</title>

  <script type="text/javascript">

  function setCopy(_sTxt){

  try{

  if(window.clipboardData){

  window.clipboardData.setData("Text", _sTxt);

  } else if(window.netscape) {//FireFox搞得真复杂呀

  netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

  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 = _sTxt;

  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);

  }

  }catch(e){}

  }

  </script>

  </head>

  <body>

  <input type="button" onclick="setCopy('hello');" value="复制" />

  <div>

  Firefox/3.0.14下可以运行<br />

  Firefox/3.5.3下无效<br />

  不过多考虑这一块了。

  </div>

  </body>

  </html>

  下面是ie firefox 读取剪切板中的信息的方法

  

复制代码 代码如下:

  function getClipboard()

  {

  if (window.clipboardData)

  {

  return (window.clipboardData.getData('text'));

  }

  else

  {

  if (window.netscape)

  {

  try

  {

  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

  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");

  clip.getData(trans, clip.kGlobalClipboard);

  var str = new Object();

  var len = new Object();

  trans.getTransferData("text/unicode", str, len);

  }

  catch (e)

  {

  alert("您的firefox安全限制限制您进行剪贴板操作,请打开'about:config'将signed.applets.codebase_principal_support'设置为true'之后重试,相对路径为firefox根目录/greprefs/all.js");

  return null;

  }

  if (str)

  {

  if (Components.interfaces.nsISupportsWString)

  {

  str = str.value.QueryInterface(Components.interfaces.nsISupportsWString);

  }

  else

  {

  if (Components.interfaces.nsISupportsString)

  {

  str = str.value.QueryInterface(Components.interfaces.nsISupportsString);

  }

  else

  {

  str = null;

  }

  }

  }

  if (str)

  {

  return (str.data.substring(0, len.value / 2));

  }

  }

  }

  return null;

  }

  下面是 ie,firefox下 写入剪切板的代码

  

复制代码 代码如下:

  copy2Clipboard=function(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){

  alert("您的firefox安全限制限制您进行剪贴板操作,请打开'about:config'将signed.applets.codebase_principal_support'设置为true'之后重试,相对路径为firefox根目录/greprefs/all.js");

  return false;

  }

  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);

  }

  }

  具体的应用,可以参考管理资源吧的代码。