3

I want to click a button a copy the text inside <div id="content"> into the clipboard. Is there a way do this with javascript or jquery, but without using a plugin. I don't need it to be cross-browser, just on Firefox.

$('#copy').click(function(){
   var cont = $('#content').text();
   //how to copy cont to clipboar?
});
sameold
  • 18,400
  • 21
  • 63
  • 87
  • possible duplicate of [How to Copy to Clipboard in JavaScript?](http://stackoverflow.com/questions/400212/how-to-copy-to-clipboard-in-javascript) – peirix Sep 19 '11 at 11:58

4 Answers4

1

Worked until about November 2012, then Mozilla destroyed it by an update. Now I've got a workaround: Open new window with contents to copy inside.

Thanks to Matthew Flaschen for the DataURL idea (https://stackoverflow.com/a/3665147/1120146)

/**
*   To use the clipboard from Mozilla / NS / Firefox:
*
*   Clipboard access works only up to Firefox 14 :-( (thanks to those security fanatics)
*
*   Solution for later versions: Window pops up with text inside (data url)
*   
*   In "about:config" : 
*       set signed.applets.codebase_principal_support = true!
*
*   @param text: The text which shold be copied to clipboard
*   @param fallbackContentType: The content type of the text, if clipboard access 
*                               doesn't work, i.e. "text/csv"
*                               default: text/plain
*/

function toClipboard(text, fallbackContentType) {
    var success = false;
    if (window.clipboardData)    {
           // the IE-manier
        window.clipboardData.setData("Text", text);
        success = true;
    }
    else if (window.netscape)  {

        if(netscape.security.PrivilegeManager != undefined) {
            netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

            var clip = Components.classes['@mozilla.org/widget/clipboard;1'].getService(Components.interfaces.nsIClipboard);
            var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);

            if(typeof(clip) == "object" && typeof(trans) == "object") {
                trans.addDataFlavor('text/unicode');

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

                stingSupporter.data = text;
                trans.setTransferData("text/unicode", stingSupporter, text.length * 2);
                var clipid = Components.interfaces.nsIClipboard;
                clip.setData(trans, null, clipid.kGlobalClipboard);

                success = true;
            }
        }
        else { // Firefox > v15
            // Create Data URL
            if(fallbackContentType == undefined) fallbackContentType = "text/plain";

            var url = "data:"+ fallbackContentType +"," + encodeURIComponent(text);
            window.open(url);
        }
    }
    return success;
}
Community
  • 1
  • 1
0

You're going to need to use Flash for that. Read the following answers:

How do I copy to the clipboard in JavaScript?

Community
  • 1
  • 1
Mike Thomsen
  • 36,828
  • 10
  • 60
  • 83
0

Use Zero Clipboard. This is the best.

Debiprasad
  • 5,895
  • 16
  • 67
  • 95
0

No, there's no way before HTML5. But implementation of that is even tricky. All the plugins use flash to copy to clipboard. You can use zClip http://www.steamdev.com/zclip/.

What gion_13 has said also requires flash as u can notice in the article that the link has. So it's no harm to use a tiny plugin to copy to clipboard :)

Mahbub
  • 3,108
  • 24
  • 29