Clipboard
Clipboard API
λΈλΌμ°μ μμ ν΄λ¦½λ³΄λλ₯Ό μ‘°μνκΈ° μν΄ μ¬μ©λλ API μ§ν©
ν΄λ¦½λ³΄λμμ λ°μ΄ν°λ₯Ό μ½μ΄μ 볡μ¬, λΆμ¬λ£κΈ° λ±μ κΈ°λ₯μ μνν μ μλ€.
ν μ€νΈ, μ΄λ―Έμ§ λ° κΈ°ν λ°μ΄ν°λ₯Ό ν΄λ¦½λ³΄λμ 볡μ¬ν μ μλ€.
APIλ μ¬μ©μμ κ°μΈμ 보λ₯Ό μ‘΄μ€νλλ‘ μ€κ³λμκΈ° λλ¬Έμ ν΄λ¦½λ³΄λμμμ μ½λ λ±μ μμ μλ μ¬μ©μμ μΉμΈμ΄ νμν κ²½μ°κ° λ§λ€.
Interface
ν΄λ¦½λ³΄λμ λ κ°μ§ μ£Όμ μΈν°νμ΄μ€
ν΄λ¦½λ³΄λ μΈν°νμ΄μ€λ μ΄μ 체μ (Window, macOS) ν΄λ¦½λ³΄λμ μ¬μ©λ¨
writeText(text: string): Promise<void>
-> ν μ€νΈλ₯Ό ν΄λ¦½λ³΄λμ λ³΅μ¬ (λΉλκΈ°)ν΄λ¦½λ³΄λμ μ°λ μμ μ κ²½μ°, λ²νΌ ν΄λ¦κ³Ό κ°μ μ¬μ©μ μ μ€μ²μ κ²°κ³ΌμΈ κ²½μ° λΈλΌμ°μ λ μΌλ°μ μΌλ‘ λͺ μμ μΈ λ©μμ§ μμ΄ κΆνμ λΆμ¬νλ€.
νμ§λ§ μ μ¬μ μΈ μ€λ₯λ κΆν λ¬Έμ λ₯Ό μΈμνκ³ μ²λ¦¬νλ κ²μ΄ μ’λ€.
readText(): Promise<T>
-> ν΄λ¦½λ³΄λμ λ°μ΄ν°λ₯Ό μ½κΈ°ν΄λ¦½λ³΄λκ° λΉμ΄ μκ±°λ, ν μ€νΈκ° ν¬ν¨λμ΄ μμ§ μκ±°λ, ν΄λ¦½λ³΄λμ λ΄μ©μ λνλ΄λ κ°μ²΄ μ€ ν μ€νΈ ννμ΄ ν¬ν¨λμ΄ μμ§ μμ κ²½μ° λΉ λ¬Έμμ΄μ λ°ννλ€.
ν΄λΉ λ©μλλ₯Ό νΈμΆνλ©΄ λΈλΌμ°μ λ μ¬μ©μκ° μ±μ ν΄λ¦½λ³΄λμμ μ½μ μ μλ κΆνμ λΆμ¬νλμ§ νμΈνλ€.
μ½μ μ μλ κΆνμ λΆμ¬νλμ§ νμΈμ΄ νμνκΈ°μ λͺ μμ μΌλ‘ μλ¬μ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌ νλ€.
write() vs writeText(), read() vs readText()
write(data: ClipboardItem):
ClipboardItem κ°μ²΄λ₯Ό λ°μ ν΄λ¦½λ³΄λμ μ°μ΄λ λ°μ¬μ©λλ€.λ€μν νμμ λ°μ΄ν°λ₯Ό ν΄λ¦½λ³΄λμ λ³΅μ¬ κ°λ₯
writeText(data: string)
: λ¨μ ν μ€νΈλ₯Ό ν΄λ¦½λ³΄λμ μ°λ κ²½μ° ν΄λΉ λ©μλλ₯Ό μ¬μ©read(): Promise<ClipboardItem>
: ClipboardItem κ°μ²΄λ₯Ό λ°ννλ©°, ClipboardItem κ°μ²΄λ ν΄λ¦½λ³΄λμ μλ λ°μ΄ν°μ ν΄λΉ νμμ λν μ 보λ₯Ό μ 곡readText() Promise<string>
: ν΄λ¦½λ³΄λμμ ν μ€νΈλ₯Ό μ½μ΄μ¨λ€.
μ₯μ
λΈλΌμ°μ μμ ν΄λ¦½λ³΄λ μ‘°μμ μ§μνμ¬ λ³΅μ¬, μλΌλ΄κΈ°, λΆνλ£κΈ°λ₯Ό μ½κ² ν μ μλ€.
λ€μν μ νμ λ°μ΄ν°λ₯Ό ν΄λ¦½λ³΄λμ 볡μ¬ν μ μλ€.
λ€μν μ νμ λ°μ΄ν°λ₯Ό μ½κΈ° μ§μνλ€.
λ¨μ
νΈνμ± λ¬Έμ λ‘ μΌλΆ μ¬μ©μλ κ΄λ ¨ κΈ°λ₯μ μ¬μ©νμ§ λͺ»ν μ μλ€.
ν΄λ¦½λ³΄λλ₯Ό μλνκΈ° μν΄ μ¬μ©μμ μΉμΈμ μ»μ΄μΌ νλ κ²½μ° λΆνμν κ°μμ΄ λ°μ(νμ )
μ μ± μΉμ¬μ΄νΈκ° μ¬μ©μμ ν΄λ¦½λ³΄λμ 볡μ¬ν λ―Όκ°ν μ 보μ μ‘μΈμ€ν μ μλ λ± λ³΄μμ λ¬Έμ κ° λλ κ²½μ°λ μ‘΄μ¬
μ£Όμμ¬ν
ν΄λ¦½λ³΄λ μΈν°νμ΄μ€λ₯Ό μ¬μ©ν λλ μ¬μ©μμ μΉμΈμ λ¨Όμ λ°μμΌ νλ€.
ν΄λ¦½λ³΄λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ μκΈ°μΉ μμ μ€λ₯κ° λ°μνμ§ μλλ‘ λ°μ΄ν° μ νμ μ£Όμ νμ
μ¬μ©μ λͺ¨λ₯΄κ² λλ λμ μμ΄ ν΄λ¦½λ³΄λμμ μ½κ±°λ μ°λ κ²μ μ¬κ°ν 보μ μνμ΄ λ μ μμΌλ―λ‘ νμ ν΄λ¦½λ³΄λμ μ‘μΈμ€ν μ μλ κΆνκ³Ό μ λΉμ¬μ κ° μλμ§ νμΈμ΄ νμνλ€.
μ νμ¬ν
ν΄λ¦ μ΄λ²€νΈ μΈλΆμμλ ν΄λΉ λ©μλλ₯Ό νΈμΆν μ μλ€.μ μ± νλ‘κ·Έλ¨μ΄ μ¬μ©μ λͺ°λ μ€ν¬λ¦½νΈλ κΈ°ν μ μ± μ½λλ₯Ό μ¬μ©μμ ν΄λ¦½λ³΄λμ 볡μ¬νμ§ λͺ»νλλ‘ νκΈ° μν 보μ μ‘°μΉ
Failed to copy! DOMException: Document is not focused
ClipboardItem
Clipboard APIμμ μ¬μ©λλ κ°μ²΄λ‘, ν΄λ¦½λ³΄λμ μ°κ±°λ μ½μ λ°μ΄ν°λ₯Ό λνλΈλ€.
ν΄λ¦½λ³΄λμ μΌλ° ν μ€νΈκ° μλ λ€λ₯Έ κ²μ λ£μΌλ €λ©΄ ClipboardItemμ μ¬μ©νμ¬ μΌμΉνλ MIME μ νμ μ μν΄μΌ νλ€
type
: ν΄λ¦½λ³΄λ μμ΄ν μ μ νμ μ€λͺ νλ λ¬Έμμ΄μ λ°°μ΄ν΄λ¦½λ³΄λμ μμ΄ν μ΄ μ΄λ€ μ’ λ₯μ λ°μ΄ν°λ₯Ό ν¬ν¨νκ³ μλμ§λ₯Ό λνλΈλ€.
Textμ κ²½μ° ["text/plain"] κ³Ό κ°μ κ°μ κ°μ
getType()
: νΉμ λ°μ΄ν° μ νμ λν λ°μ΄ν°λ₯Ό λΉλκΈ°μ μΌλ‘ κ°μ Έμ€λ λ©μλgetTypeAsString()
: getTypeκ³Ό λΉμ·νμ§λ§ λ°μ΄ν°λ₯Ό λ¬Έμμ΄λ‘ λ°λλ€.
Clipboard API μ΄μ μλ ν΄λ¦½λ³΄λμ λ³΅μ¬ λΆμ¬λ£μ μ μλ MIME μ νμΌλ‘
text/plain
,text/html
,image/png
λ§ μ§μνλ€.λΈλΌμ°μ μ λ΄μ₯λ μ€ν¬λ¦½νΈ ꡬμ±μμλ μλ°μ€ν¬λ¦½νΈλ₯Ό μ κ±°νκ±°λ PNG decompression bomb assaultsμ λ§κΈ° μν΄ μ²λ¦¬ μμ μ μννλ κ²½μ°κ° λ§μλ€.
ν΄λ¦½λ³΄λ APIλ μ΄μ μΉ μ¬μ©μ μ§μ νμμ μ§μνλ―λ‘ κ°λ°μκ° λͺ¨λ λ°μ΄ν°λ₯Ό 볡μ¬ν μ μλ€.
μΉ μ¬μ©μ μ μ νμ μ μ¬μ©νλ©΄
JSON.stringify()
μ ν¨κ» μ¬μ©νμ¬ μΉμμ μλ‘μ΄ λ°μ΄ν° νμμ μ μν μ μλ€.κΈ°λ³Έμ μΌλ‘ ν μ€νΈ νμμΌλ‘ λ³ννμ§ μκ³ λ€λ₯Έ μ ν리μΌμ΄μ μΌλ‘ μ§μ 볡μ¬ν μ μλ€.
μ μνκΈ°
ν΄λ¦½λ³΄λμ μΉ μ¬μ©μ μ μ νμμ μ¬μ©νλ €λ©΄ Blobμ MIM μ νμ μ λμ¬λ‘ '
web
' μ μμ±ν΄μΌ νλ€.
λ°μ΄ν° μ½κΈ°
μ¬μ©μ μ μ νμμ λ°μ΄ν°λ₯Ό μ½μΌλ €λ©΄
web
μΌλ‘ μμνλ ν΄λ¦½λ³΄λ κ°μ²΄λ₯Ό κ²μν΄μΌ νλ€.
μ§μνμ§ μλ νκ²½μμ μ²λ¦¬
Last updated