Copying text to the operating system clipboard in Flex

by Peter deHaan on January 30, 2008

in ActionScript, System

The following example shows you how you can copy text from a Flex application to the operating system’s clipboard by using the static System.setClipboard() method.

Full code after the jump.

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/01/30/copying-text-to-the-operating-system-clipboard-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">
 
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;
 
            private function button_click():void {
                System.setClipboard(richTextEditor.text);
                Alert.show("Done");
            }
        ]]>
    </mx:Script>
 
    <mx:ApplicationControlBar dock="true">
        <mx:Button id="button"
                label="Copy text to clipboard"
                toolTip="Click here to copy the contents of the RichTextEditor control to the OS clipboard."
                click="button_click();" />
    </mx:ApplicationControlBar>
 
    <mx:RichTextEditor id="richTextEditor"
            text="The quick brown fox jumped over the lazy dog."
            width="100%"
            height="100%" />
 
</mx:Application>

View source is enabled in the following example.

{ 20 comments… read them below or add one }

1 PaulH January 31, 2008 at 12:50 am

might be good to show an example of clearing the clipboard?

Reply

2 kanu April 13, 2008 at 9:33 am

This is the example for copying your elements from AIR and paste in to desktop,is there’s any way of dragging your elements from AIR to desktop.

Reply

3 Sujan September 8, 2008 at 2:30 am

This is a perfect example to copy text into system clipboard and works perfectly for me.

Is there a way to get text from system clipboard without using Adobe AIR? I have been trying to do that but all my efforts are in vain.

I wonder if I am the first one to face this problem. The combination of Ctrl + V doesn’t work perfectly in Mozilla Firefox and I want to overwrite the event manually. And I need to get the text from System clipboard.

Can anyone please help me with that.

Reply

4 Tom September 17, 2008 at 7:49 am

You cant man! Its privacy data! But I believe in flash 10 adobe allows to access to user disk so maybe… be patient!

Reply

5 Dante October 28, 2008 at 6:32 am

Does anyone know how to prevent user copying to clipboard from Flex application ?

Reply

6 Steve July 13, 2009 at 7:43 pm

Have you found a solution? I need to do this too. (i.e., prevent a user from using control-c)

Reply

7 Mahesh D December 30, 2008 at 3:12 am

I think the above example shows how to copy the data from the text box to clipboard.
I am using .net 2005 and i want the same functionality of copying the data in clipboard i have used the command System.setClipboard(’some text’) in JavaScript but it work in IE but not in Firefox.
Please i need help about clipboard copy functionality especially for Firefox browser.

Reply

8 Suresh Pawar December 17, 2009 at 11:22 am

Using System.setClipboard("String"); we can set contents to clipboard.
Now i need to clear the clipboard contents.
Is there any way to clear clipboard contents?

Reply

9 Peter deHaan December 17, 2009 at 2:30 pm

@Suresh,

I’m not sure you can “clear” the clipboard exactly, but what if you try calling the System.setClipBoard(""); with an empty string?

Peter

Reply

10 kolo January 29, 2010 at 1:41 pm

hi,

how can I do this setClipboard function with rollOver the button?

Reply

11 Peter deHaan January 29, 2010 at 1:45 pm

@kolo,

“Certain actions, such as those that display a pop-up window, may only be invoked upon user interaction, for example by a mouse click or button press.”

It looks like you can only set clipboard contents based on a mouse click or button press and not a simple rollover.

Peter

Reply

12 kolo January 29, 2010 at 2:20 pm

Alert.show is pop-up window and you can invoke this with rollOver…

Reply

13 Peter deHaan January 29, 2010 at 4:28 pm

Yeah, I think by “pop-up window” they meant more like FileReference upload or download actions, full screen, and apparently clipboard access. Otherwise I assume when a SWF loaded, the rogue site could set you fullscreen, erase your clipboard contents, and try downloading a file.

Peter

Reply

14 kolo January 29, 2010 at 3:21 pm

Do U have any idea how to handle this “rollOver” problem. I need to copy text from RichTE without clicking:( Maybe it is possible to implement javascript or java functionality? Any Idea?

Reply

15 Peter deHaan January 29, 2010 at 4:23 pm

It may be possible to copy text to the clipboard using JavaScript, but I haven’t looked at that in a long time, and I’m not certain on how cross-browser friendly that would be (may require different setups for Firefox/IE/Safari/Chrome/Opera/etc). Once you figure out the JavaScript side, you could try calling the JS methods from ActionScript using the ExternalInterface class in a rollOver event handler.

Or, just use a mouse “click” instead of “rollOver” and you’re done. ;)

Peter

Reply

16 kolo January 29, 2010 at 4:14 pm

Is it possible to do “ctrl+a” on text in RichTE with button?

Reply

17 Peter deHaan January 29, 2010 at 4:26 pm

You should be able to do something using the setSelection() method on the inner TextArea control, as seen in the following example:

private function button_click():void {
    richTextEditor.textArea.setSelection(0, richTextEditor.text.length);
    System.setClipboard(richTextEditor.text);
    Alert.show("Done");
}

Peter

Reply

18 kolo January 29, 2010 at 4:45 pm

I cant do click. I am doing a project for paralised people and they cant use their hands to do click.

Reply

19 kolo January 29, 2010 at 5:42 pm

THX for your help.

Reply

20 kolo January 30, 2010 at 12:36 pm

OK I HAVE IT! Maybe it will help someone. It works only in IE but it works:D
FLex code:

private function jsSend():void{
    if (ExternalInterface.available){
    	s=richTextEditor.text;
    	ExternalInterface.call("copyT",s);
    }
}

Javacript:

function copyT(s)  
{  
    if(window.clipboardData)  
    {  
    window.clipboardData.setData('text',s);  
    }  
    else  
    {  
        var clipboarddiv=document.getElementById('divclipboardswf');  
    if(clipboarddiv==null)  
    {  
       clipboarddiv=document.createElement('div');  
           clipboarddiv.setAttribute("name", "divclipboardswf");  
       clipboarddiv.setAttribute("id", "divclipboardswf");  
       document.body.appendChild(clipboarddiv);  
    }  
        clipboarddiv.innerHTML='';  
    }  
    alert('The text is copied to your clipboard...');  
    return false;  
}

Reply

Leave a Comment

Sorry, this blog is terrible at eating HTML comments.
If you're pasting any HTML/XML/MXML code, you need to convert your < characters to &lt; and your > characters to &gt; .

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree

Previous post:

Next post: