How does Trello access the user's clipboard?
stackoverflow.com
stackoverflow.com
@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.It's not exactly in danger of disappearing because of the obnoxious pedantry of one user.
It might be fun to create a Chrome extension that created such a tally.
Yeah, i don't like when interesting questions get closed for being off-topic either; but it's not what happened in this case. It's just a SO user who gets mad when someone responds in CoffeeScript a question with a JavaScript tag (or when a question tagged as JS is really a CS question). I'm pretty sure i recall him doing something similar (and using the same kind of "because it's ugly!" arguments) in at least another SO question.
I actually built a Chrome extension - https://chrome.google.com/webstore/search/copy%20link%20addr... that does exactly this, and for all web pages. GitHub source https://github.com/dhruvvemula/copylinkaddress/blob/master/c...
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).
Is there really no better way to get at the clipboard from a web app?
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
This has always concerned me, not because Google is tracking this, but because this trick could do real harm in the hands of a malicious dev. I mean, who checks the source code of a page to make sure hrefs are not overwritten before clicking a link?
PS: I know what you'll suggest, "browser with javascript off then!". No thanks. I spent ~1 year using NoScript on Firefox and I can say I ended up hating it with a passion. It cripples web browsing and makes it a really frustrating experience, and in 70% of the cases you are forced to allow Javascript on the page with its subsequent page reload.
For reference, http://www.w3.org/TR/clipboard-apis/ is the W3 draft for clipboard events.
When you say, deny, does that mean the user must go to their browser settings and set it manually? If so, what bearing does that have on what we're discussing?
As for setting the clipboard data, I have seen no way of setting that through the copy, paste or cut events.
edit: fix some words
AFAIK: Safari does not expose a setting for this (but I didn't look). Chrome uses Chrome app/extension permissions to control this setting. I'm not sure how Firefox does it.
> If so, what bearing does that have on what we're discussing?
You asked "Is there a way to trigger the copy, cut, and paste events?". You don't need to trigger them in this case since the browser automatically fires them when the user invokes the corresponding edit action.
> As for setting the clipboard data, I have seen no way of setting that through the copy, paste or cut events.
Here is a quick sample that works in everything except IE. I'm too impatient to figure out why it doesn't work in IE but http://msdn.microsoft.com/en-us/library/hh772145(v=vs.85).as... provides IE-centric documentation.
Okay, so for all intents and purposes it cannot be done programmatically without user assistance.
> You asked "Is there a way to trigger the copy, cut, and paste events?". You don't need to trigger them in this case since the browser automatically fires them when the user invokes the corresponding edit action.
You're right, I apologize.
> Here is a quick sample that works in everything except IE. I'm too impatient to figure out why it doesn't work in IE but http://msdn.microsoft.com/en-us/library/hh772145(v=vs.85).as.... provides IE-centric documentation.
As I mentioned in a previous comment, I've seen nothing that suggest this event allows you to change the contents of what's copied to the clipboard before it happens. From what I can tell this is an notification that it has happened. The link you have provided does not indicate anything to the contrary.
I'm not ruling out that what you're saying, but I still haven't seen something that definitively shows it's possible. Looking at all the hacks and alternatives to make it as close to "click-to-copy" a possible strong suggests it's not.
Try it out =)
I finally found something indicating browser-support for this.[0] I have to think it wasn't supported in earlier versions of certain browsers and that's why Trello decided not to go this route. I'm definitely going to play around with this. This is pretty darn cool, thanks for sticking with me. :)
Putting something into your clipboard is kind of annoying and could be a small security risk, but pulling the contents out is much worse. If it's a site you don't visit often it would be limited exposure, but if someone manages to hack Soundcloud/Pandora or inject JS into them you're talking about a lot of illicitly acquired information. Most of it may be useless, but it's a sucker-bet to assume no-one will get hurt by it.
My suggestion, expanding on what they do, is to not to try to copy anything to the user's clipboard and instead highlight the content (I'd advise against the hidden textarea too though). On mobile devices especially, highlighting is still a bit of a pain with large amounts of text.
http://stackoverflow.com/questions/11128130/select-text-in-j...
Leave copying to the user. As an added benefit, you're not relying on browser hacks (IE only or otherwise) or flash.
In this case, it's an actionable (command only) element that's inaccessible directly; the same as a tooltip or popup that hasn't shown itself yet. However, even in the case of a tooltip or popup, they will eventually show themselves to the user. A completely hidden anything IMO introduces a layer of obfuscation to what's actually happening to the DOM and on the page.
It's a bit "hackish".
It's definitely hackish, though. :)