[Racine des codes] [Page précédente]

copy to or from Clipboard

/Html JavaSript/Inutile/copy to or from Clipboard.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Javascript - Copy from clipboard - Copy to clipboard</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<meta name="description" content="Javascript for copy data from/to clipboard for Mozilla and IE" />
<meta name="keywords" content="javascript, clipboard, copy, mozilla, IE, clipboardData" />

<script type="text/javascript">
// ----------------------------------------------------------------------------
function setClipboard(txt) {
  if (window.clipboardData) {
    // the IE-manier
    window.clipboardData.setData("Text", txt);
  } else if (window.netscape) {
    // the Mozilla secure manier
    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 = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
    str.data=txt;
    trans.setTransferData("text/unicode", str, txt.length*2);
    var clipid=Components.interfaces.nsIClipboard;
    if (!clip) return false;
    clip.setData(trans, null, clipid.kGlobalClipboard);
  }
  return;
}
// ----------------------------------------------------------------------------
function getClipboard() {
  if (window.clipboardData) {
    // the IE-manier
    return(window.clipboardData.getData('Text'));
  } else if (window.netscape) {
    // the Mozilla secure manier
    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();
    clip.getData(trans, clip.kGlobalClipboard);
    try { trans.getTransferData('text/unicode', str, len); }
    catch(error) { return; }
    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;
}
</script>

</head>
<body>

<div>
  <div style="color:red">
  !!! Only work on Mozilla if the script is signed !!!<br/>
  !!! Ne fonctionne sous Mozilla que si le script est signé !!!</br>
  </div>
<form action="#">
  <fieldset>
  <textarea id="txtin" cols="50" rows="5">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod</textarea><br/>
  <input type="button" value="copy to clipboard (IE and Mozilla)" onclick="setClipboard(document.getElementById('txtin').value)"/><br/>
<hr/>
  <input type="button" value="copy from clipboard (IE and Mozilla)" onclick="document.getElementById('txtout').value=getClipboard()"/><br/>
  <textarea id="txtout" cols="50" rows="5"></textarea><br/>
  </fieldset>
</form>
</div>

</body>
</html>
[edit]