Ujawnienie: Napisałem kod, którego używa Trello ; poniższy kod to rzeczywisty kod źródłowy, którego Trello używa do wykonania sztuczki ze schowka.
W rzeczywistości nie „uzyskujemy dostępu do schowka użytkownika”, zamiast tego pomagamy użytkownikowi, wybierając coś przydatnego po naciśnięciu Ctrl+ C.
Wygląda na to, że to rozgryzłeś; wykorzystujemy fakt, że jeśli chcesz nacisnąć Ctrl+ C, najpierw musisz nacisnąć Ctrlklawisz. Po Ctrlnaciśnięciu klawisza wchodzimy do obszaru tekstowego, który zawiera tekst, który chcemy skończyć w schowku, i zaznaczamy w nim cały tekst, więc wybór jest ustawiany po Cnaciśnięciu klawisza. (Następnie ukrywamy obszar tekstowy, gdy Ctrlpojawi się klucz)
W szczególności Trello robi to:
TrelloClipboard = new class
constructor: ->
@value = ""
$(document).keydown (e) =>
# Only do this if there's something to be put on the clipboard, and it
# looks like they're starting a copy shortcut
if !@value || !(e.ctrlKey || e.metaKey)
return
if $(e.target).is("input:visible,textarea:visible")
return
# Abort if it looks like they've selected some text (maybe they're trying
# to copy out a bit of the description or something)
if window.getSelection?()?.toString()
return
if document.selection?.createRange().text
return
_.defer =>
$clipboardContainer = $("#clipboard-container")
$clipboardContainer.empty().show()
$("<textarea id='clipboard'></textarea>")
.val(@value)
.appendTo($clipboardContainer)
.focus()
.select()
$(document).keyup (e) ->
if $(e.target).is("#clipboard")
$("#clipboard-container").empty().hide()
set: (@value) ->
W DOM mamy
<div id="clipboard-container"><textarea id="clipboard"></textarea></div>
CSS dla schowka:
#clipboard-container {
position: fixed;
left: 0px;
top: 0px;
width: 0px;
height: 0px;
z-index: 100;
display: none;
opacity: 0;
}
#clipboard {
width: 1px;
height: 1px;
padding: 0px;
}
... a CSS sprawia, że nie można zobaczyć obszaru tekstowego, kiedy się pojawia ... ale jest "wystarczająco widoczny", aby skopiować.
Gdy najedziesz kursorem na kartę, zadzwoni
TrelloClipboard.set(cardUrl)
... więc pomocnik schowka wie, co wybrać po Ctrlnaciśnięciu klawisza.