

How does Trello access the user's clipboard? - gedrap
http://stackoverflow.com/questions/17527870/how-does-trello-access-the-users-clipboard

======
dhruvtv
(Copy-pasting my answer from the same Stackoverflow thread)

I actually built a Chrome extension -
[https://chrome.google.com/webstore/search/copy%20link%20addr...](https://chrome.google.com/webstore/search/copy%20link%20address)
that does exactly this, and for all web pages. GitHub source
[https://github.com/dhruvvemula/copylinkaddress/blob/master/c...](https://github.com/dhruvvemula/copylinkaddress/blob/master/copylinkaddress.js)

I find three bugs with Trello's approach, which I know because I've faced them
myself :)

The copy doesn't work in these scenarios:

1\. If you already have Ctrl pressed and then hover a link and hit C, the copy
doesn't work.

2\. If your cursor is in some other text field in the page, the copy doesn't
work.

3\. If your cursor is in the address bar, the copy doesn't work.

I solved #1 by always having a hidden span, rather than creating one when user
hits Ctrl/Cmd.

I solved #2 by temporarily clearing the zero-length selection, saving caret
position, doing the copy and restoring caret position.

I haven't found a fix for #3 yet :) (For info, check the open issue in my
Github project -
[https://github.com/dhruvvemula/copylinkaddress/issues/1](https://github.com/dhruvvemula/copylinkaddress/issues/1)).

------
gruseom
Clever. They intercept the 'ctrl' keypress and make a textarea with the text
they want to copy pre-selected, so if and when the user presses 'c', the
browser will send the already-selected text to the clipboard. I assume this
works even though the textarea is hidden?

Is there really no better way to get at the clipboard from a web app?

~~~
arsenerei
Not to my knowledge. Only flash gives you the ability to "click to copy."
Javascript has no of copying text without user specifying the copy action. I
don't know the justification, but it can be a security issue if your user
isn't aware that they copied something.

This is a really neat trick, and I needed it just yesterday, so I'll
definitely be giving it a go today. Related to security issues, it reminds me
of this issue: [http://thejh.net/misc/website-terminal-copy-
paste](http://thejh.net/misc/website-terminal-copy-paste)

~~~
IneffablePigeon
I think the risk is that nefarious people might, for example, wait for you to
copy a (legitimate) URL, then overwrite the clipboard with a slightly
different URL, sending whoever follows what you just copied to somewhere else
if you don't notice. Seems to me that this trick would be just as effective at
doing that though.

~~~
duskwuff
There are a bunch of web sites that use an annoying doodad from
[http://tynt.com](http://tynt.com) to inject advertising into copy/pasted
content. I'm not sure if Tynt is using the exact same trick or not; whatever
the case, though, the technique is known.

~~~
dylz
They append their spam to the end of the selection, but indexof length -1

------
Mahn
Clever idea, someone should turn this trick into a library.

------
jtchang
Weird does this work in Ubuntu using chrome?

~~~
mcintyre1994
It does yep, it doesn't on Firefox though.

~~~
epidemian
It did work for me on FF/Ubuntu.

------
eksith

      @DavidMurdoch you really gave the -1? I'm no fan of CoffeeScript either, but everyone should choose 
      the tool [s]he is most productive with. – Boldewyn Jul 9 at 5:49 
      
      `
      @Boldewyn, I did. My justifications for it were that a) The question is tagged JavaScript, and b) a down 
      vote on a question that was on its way to 100+ up votes in less than a day isn't going to put a dent in anyone's 
      day. I even thought about flagging it as off-topic, but figured that was going a little bit too far. :-) 
      – David Murdoch Jul 9 at 13:49 
      
      `
      The question was tagged Javascript, but the question is, "How does Trello do this". Seriously, you think 
      it's appropriate to penalize the answerer for the fact that Trello didn't actually do it directly in Javascript?
       – Elchonon Edelson Jul 9 at 15:34
      
      `
      @DavidMurdoch Would you have preferred the compiled JavaScript?! – Mario Jul 9 at 17:35 
       
      `
      @ElchononEdelson, yes, I realized this (the question is also tagged Trello). While its appropriateness 
      is debatable, the answerer is the developer that wrote the code in CoffeeScript in the first place - and *that* 
      may very well warrant a down vote in-and-of itself. (I'm kidding, mostly). – David Murdoch Jul 9 at 21:11 
      
      `
      @Mario, yes. Although, I did compile it to JavaScript myself; it was equally hideous. – David Murdoch Jul 9 at 
      21:12 
      
      `
      I don't think the appropriateness is debatable. I think the appropriateness is thoroughly and completely 
      absent. – Elchonon Edelson Jul 9 at 21:22 
      
      `
      Hm, well then maybe it is just my visceral loathing for CoffeeScript that made me do it. – David Murdoch Jul 9 
      at 21:52
      
      `
      So, in conclusion: haters gonna hate? – BoltClock♦ Jul 11 at 3:29
    

... Welcome to Stack Overflow.

~~~
chmullig
It's so disappointing how every question worth reading gets flagged,
downvoted, and closed for the most random, pedantic bullshit reasons.

~~~
eieio
To be fair this answer currently has 591 upvotes and 1 downvote, and the
question has 0 close votes.

It's not exactly in danger of disappearing because of the obnoxious pedantry
of one user.

------
dsyph3r
This was posted only a few weeks ago

