top | item 10152872

Flash-Free Clipboard for the Web

167 points| smacktoward | 10 years ago |hacks.mozilla.org

58 comments

order
[+] Raed667|10 years ago|reply
I really appreciate this, as I had to jump through a lot of loops to do so a few years ago. But I think that the browser should display a small alert when this API is called (like the webcam, or microphone).
[+] steveklabnik|10 years ago|reply

  > Google Chrome and Internet Explorer both also support this API. Chrome uses
  > the same restriction as Firefox (that it must be run in a user-initiated
  > callback). Internet Explorer allows it to be called at any time, except it
  > first prompts the user with a dialog, asking for permission to access the
  > clipboard.
Seems like IE does what you want.
[+] zserge|10 years ago|reply
I was so disappointed that every color picker website nowadays uses flash/zeroclipboard to only copy HEX color value (6 letters!). It's so slow and inefficient. I ended up making my own one using this clipboard API - http://0xrgb.com

Glad to see that FF now supports this API, too!

[+] ck2|10 years ago|reply
Yup it wipes out whatever important info I was saving in my clipboard without warning me what-so-ever

I guess I could put a megabytes into anyone's clipboard now when they click on any link on a website.

[+] M4v3R|10 years ago|reply
It fails silently on Safari, though.
[+] tyho|10 years ago|reply
I prefer

    window.prompt("Press Ctrl-C then Enter", text);
I don't want sites to be able to randomly clear my clipboard.
[+] lukifer|10 years ago|reply
I consider it an OS-level deficiency that clipboard copy is destructive by default. The fact that no major OS has multi-clipboard out of the box in 2015 is shameful.
[+] JoshTriplett|10 years ago|reply
I don't mind sites being able to send data to the clipboard, as long as 1) they have explicit permission, and 2) they can only do so in response to a user action.
[+] moron4hire|10 years ago|reply
Anything involving modal dialogs is bad UX these days, especially considering the variety of platforms web code needs to run on. You don't have "CTRL+C" on a smartphone or tablet.
[+] moron4hire|10 years ago|reply
I make a text editor that runs in a texture on a 3D object in the browser. I have a text area hidden in the background that technically holds focus and all clipboard operations go through it.

I was hoping this would let me get rid of that crufty text area. It's a serious quality and performance liability, and in certain special cases even ruins the UX. But it looks like that is not the case. Le sigh.

[+] ihuman|10 years ago|reply
The execCommand("cut"/"copy") API is only available during a user-triggered callback, such as a click. If you try to call it at a different time, execCommand will return false, meaning that the command failed to execute.

Couldn't you bypass this by creating an invisible button, and then simulating a click event?

[+] function_seven|10 years ago|reply
If they do it right, I imagine the source of the event would be tainted, so that only an actual click received from the OS would be allowed to propagate through.

I'm sure it's tricky to ensure this, though. Like pop-up blocking.

[+] mschuster91|10 years ago|reply
The engine can walk up the call stack and detect if the command was triggered by a click event.
[+] Manishearth|10 years ago|reply
Simulated click events are tracked as simulated. From the Javascript point of view there's not much difference unless synthetic/authentic click activation is involved (i.e. links, form submit, etc)
[+] ck2|10 years ago|reply
Can't this be used to poison the clipboard with bad code that once pasted in the wrong place will execute?
[+] Vexs|10 years ago|reply
Just as much as the existing flash-based methods can.
[+] rhelmer|10 years ago|reply
Websites should not be able to overwrite the clipboard unless the action is user-initiated, from the blog post: The execCommand("cut"/"copy") API is only available during a user-triggered callback, such as a click. If you try to call it at a different time, execCommand will return false, meaning that the command failed to execute.
[+] ibrad|10 years ago|reply
Thank you developers and all, but I don't think I had much trouble copying text before. On the contrary, when I click on a field and it force select everything for me I get frustrated.

Trust me, selecting text is not a problem. I haven't seen a place where click to select was a life savior.