Forum Moderators: open

Message Too Old, No Replies

Copy and Paste button

         

th1chsn

5:45 pm on Sep 15, 2005 (gmt 0)

10+ Year Member



I would like to have a textbox and put a button next to it that allows the user to copy the contents of the textbox. I would then like have a paste button on another page.

Does anyone know of the code to do this?

ajkimoto

8:46 pm on Sep 15, 2005 (gmt 0)

10+ Year Member



th1chsn,

I am not aware of a cross-browser way of to copy to the windows clipboard without problems. You can do it in IE, and you can do it in Mozilla though Mozilla will ask you to verify that it is okay to run such an unsafe command.

That having been said, here is some code that I came across a while back:

<script type="text/javascript">
<!--

function ClipBoard()
{
meintext=document.getElementById('txtTest').value

if (window.clipboardData)
{

// the IE-manier
window.clipboardData.setData("Text", meintext);

// waarschijnlijk niet de beste manier om Moz/NS te detecteren;
// het is mij echter onbekend vanaf welke versie dit precies werkt:
}
else if (window.netscape)
{

// dit is belangrijk maar staat nergens duidelijk vermeld:
// you have to sign the code to enable this, or see notes below
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

// maak een interface naar het clipboard
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;

// maak een transferable
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;

// specificeer wat voor soort data we op willen halen; text in dit geval
trans.addDataFlavor('text/unicode');

// om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig om het in op te slaan
var str = new Object();
var len = new Object();

var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);

var copytext=meintext;

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

}
alert("Following info was copied to your clipboard:\n\n" + meintext);
return false;
}

//-->
</script>

<style type="text/css">

</style>

</head>

<body>
<input type="text" id="txtTest" />
<button onclick="ClipBoard()">Copy</button>
</body>

ajkimoto

Dijkgraaf

11:35 pm on Sep 15, 2005 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



And if you are wondering about what language some of the comments and variable names are in, it is Dutch :-)

Bernard Marx

8:32 am on Sep 16, 2005 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



That's some crazy code there for Mozilla, ajkimoto. I have it stored away now.
Thanks.

P.S. These two lines are superfluous, and {are better/can be safely} removed.


// om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig om het in op te slaan
var str = new Object();
var len = new Object();

th1chsn

2:19 pm on Sep 16, 2005 (gmt 0)

10+ Year Member



ajkimoto, that's great! Thanks.