Copying text to the operating system clipboard in Flex

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.

23 thoughts on “Copying text to the operating system clipboard in Flex

  1. 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.

  2. 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.

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

  3. 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.

  4. 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?

    1. @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

    1. 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

  5. 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?

    1. 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

    1. 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

  6. 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;  
    }
  7. Hi,

    Nice Example. Very helpful for me!!!!

    I need your help!!!

    I want to perform cut, copy and paste operations in my application. How can I paste the text copied in the clipboard to the text area in flex appliaction. Waiting for your response!!!!!

  8. I have formmated text in my Flex 3.5 TextArea (line breaks) and when I copy this to the clipboard I lose the formatting. Is there a way to maintain the formatting when copying to the clipboard?

Comments are closed.