Klik tombol copy ke clipboard menggunakan jQuery
Bagaimana cara menyalin teks di dalam sebuah div untuk clipboard? Saya memiliki div dan perlu untuk menambahkan link yang akan menambahkan teks ke clipboard. Apakah ada solusi untuk ini?
<p class="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
<a class="copy-text">copy Text</a>
Setelah saya klik salin teks, kemudian saya tekan Pilih + V, maka harus disisipkan.
401
20
Ada lagi non-cara Flash (terlepas dari Clipboard API disebutkan dalam jfriend00's jawaban). Anda perlu memilih teks dan kemudian mengeksekusi perintah
copy
untuk menyalin ke clipboard teks apapun yang sedang dipilih pada halaman.Sebagai contoh, fungsi ini akan menyalin isi berlalu elemen ke clipboard (diperbarui dengan saran di komentar dari PointZeroTwo):
Ini adalah cara kerjanya:
Anda dapat melihat demo cepat berikut ini:
Masalah utama adalah bahwa tidak semua browser mendukung]5 fitur ini pada saat ini, tetapi anda dapat menggunakannya pada yang utama dari:
Update 1: hal Ini dapat dicapai juga dengan JavaScript murni solusi (tanpa jQuery):
Perhatikan bahwa kita melewati id tanpa # sekarang.
Sebagai madzohan dilaporkan di komentar di bawah ini, ada beberapa masalah aneh dengan 64-bit versi Google Chrome di beberapa kasus (menjalankan file lokal). Masalah ini tampaknya akan tetap dengan non-jQuery solusi di atas.
Madzohan mencoba di Safari dan solusi bekerja tetapi menggunakan
dokumen.execCommand('SelectAll')
alih-alih menggunakan.select()
(seperti yang ditentukan di chat dan di komentar di bawah ini).Sebagai PointZeroTwo poin di komentar, kode ini bisa terus ditingkatkan sehingga akan kembali keberhasilan/kegagalan hasilnya. Anda dapat melihat demo di [ini jsFiddle][7].
UPDATE: COPY MENJAGA FORMAT TEKS
Sebagai user mencontohkan dalam versi bahasa spanyol dari StackOverflow, solusi yang tercantum di atas bekerja dengan sempurna jika anda ingin menyalin isi dari sebuah elemen secara harfiah, tetapi mereka don't bekerja yang besar jika anda ingin menyisipkan teks disalin dengan format (seperti yang disalin ke dalam
input type="text"
, format "hilang").Solusi untuk itu akan salin ke dalam sebuah konten dapat diedit
div
dan kemudian menyalinnya menggunakanexecCommand
dengan cara yang sama. Berikut ini ada contoh - klik pada tombol copy dan kemudian paste ke dalam konten dapat diedit kotak di bawah ini:Dan di jQuery, itu akan menjadi seperti ini:
Edit seperti 2016
Pada 2016, anda sekarang dapat menyalin teks ke clipboard di sebagian besar browser karena browser yang paling memiliki kemampuan untuk pemrograman menyalin teks ke clipboard menggunakan
dokumen.execCommand("copy")
yang bekerja dari sebuah pilihan.Seperti dengan beberapa tindakan lain dalam browser (seperti membuka jendela baru), copy ke clipboard hanya dapat dilakukan melalui pengguna tertentu tindakan (seperti klik mouse). Misalnya, hal ini tidak dapat dilakukan melalui timer.
Berikut ini's contoh kode:
Berikut ini's sedikit lebih canggih demo: https://jsfiddle.net/jfriend00/v9g1x0o6/
Dan, anda juga bisa mendapatkan pra-dibangun perpustakaan yang melakukan ini untuk anda dengan clipboard.js.
Tua, sejarah bagian dari jawaban
Langsung menyalin ke clipboard melalui JavaScript tidak diizinkan oleh browser modern untuk alasan keamanan. Yang paling umum mengatasinya adalah dengan menggunakan Flash dan kemampuan untuk menyalin ke clipboard yang hanya dapat dipicu oleh pengguna langsung klik.
Seperti yang sudah disebutkan, ZeroClipboard adalah tempat sekumpulan kode untuk mengelola objek Flash untuk melakukan copy. I've digunakan. Jika Flash diinstal pada browsing perangkat (yang menandakan ponsel atau tablet), ia bekerja.
Berikutnya yang paling umum adalah dengan hanya menempatkan clipboard teks yang terikat ke sebuah field input, memindahkan fokus ke bidang tersebut dan menyarankan pengguna untuk tekan Pilih + C untuk menyalin teks.
Diskusi lain dari masalah ini dan mungkin pekerjaan-arounds dapat ditemukan di ini sebelum Stack Overflow posting:
https://stackoverflow.com/questions/400212/how-to-copy-to-the-clipboard-in-javascript
https://stackoverflow.com/questions/1539641/how-to-copy-text-to-the-clients-clipboard-using-jquery
Bagaimana anda dapat menyalin ke clipboard tanpa Flash?
Pertanyaan-pertanyaan ini meminta alternatif modern untuk menggunakan Flash telah menerima banyak pertanyaan upvotes dan tidak ada jawaban dengan solusi (mungkin karena tidak ada):
https://stackoverflow.com/questions/10729570/html5-alternative-to-flash-based-zeroclipboard-for-safe-copying-of-data-to-clipb
https://stackoverflow.com/questions/6355300/copy-to-clipboard-without-flash
Internet Explorer dan Firefox yang digunakan untuk non-standar Api untuk mengakses clipboard, tetapi versi yang lebih modern telah usang metode tersebut (mungkin untuk alasan keamanan).
Ada baru lahir standar usaha untuk mencoba untuk datang dengan "aman" cara untuk memecahkan yang paling umum clipboard masalah (mungkin memerlukan pengguna tertentu tindakan seperti Flash membutuhkan solusi), dan itu tampak seperti itu mungkin sebagian diimplementasikan pada versi terbaru dari Firefox dan Chrome, tapi saya belum't menegaskan bahwa belum.
clipboard.js adalah sebuah utilitas yang memungkinkan menyalin teks atau HTML data ke clipboard tanpa menggunakan Flash. It's sangat mudah digunakan; hanya mencakup .js dan menggunakan sesuatu seperti ini:
clipboard.js juga di GitHub.
Edit pada 15 Januari 2016: The atas jawaban adalah diedit hari ini untuk referensi yang sama API di jawaban saya posted in agustus 2015. Teks sebelumnya telah menginstruksikan pengguna untuk menggunakan ZeroClipboard. Hanya ingin menjadi jelas bahwa aku tidak't yank ini dari jfriend00's jawaban, bukan sebaliknya.
Kesederhanaan adalah kecanggihan yang tertinggi.
Jika anda don't ingin teks-to-be-coppied akan terlihat:
jQuery:
HTML:
Dengan Garis Istirahat (Extention Jawaban dari Alvaro Montoro)
Bahkan pendekatan yang lebih baik tanpa flash atau persyaratan lain adalah clipboard.js. Semua yang perlu anda lakukan adalah menambahkan data-clipboard-target="#toCopyElement"
pada setiap tombol, menginisialisasi
baru Clipboard('.btn');dan itu akan menyalin konten dari DOM dengan id
toCopyElement` ke clipboard. Ini adalah cuplikan yang menyalin teks yang disediakan dalam pertanyaan anda melalui link.Salah satu keterbatasan meskipun adalah bahwa hal itu tidak bekerja pada safari, tetapi bekerja pada semua browser lain termasuk browser mobile seperti tidak menggunakan flash
Anda dapat menggunakan kode ini untuk menyalin nilai masukan di halaman dalam Clipboard dengan mengklik tombol
Ini adalah Html
Kemudian untuk html ini , kita harus menggunakan Kode JQuery
Ini adalah solusi sederhana untuk pertanyaan ini
Ini adalah metode yang paling sederhana untuk menyalin isi
jQuery solusi sederhana.
Harus dipicu oleh pengguna's klik.
It's sangat penting bahwa field input tidak memiliki
display: none
. Browser tidak akan pilih teks dan oleh karena itu tidak akan disalin. Gunakanopacity: 0
dengan lebar 0px untuk memperbaiki masalah.anda hanya dapat menggunakan lib ini mudah untuk mewujudkan copy gol!
https://clipboardjs.com/
atau
https://github.com/zeroclipboard/zeroclipboard
http://zeroclipboard.org/
Sebagian besar jawaban yang diusulkan buat sementara tambahan tersembunyi elemen input(s). Karena kebanyakan browser saat ini mendukung div mengedit konten, saya mengusulkan sebuah solusi yang tidak membuat elemen tersembunyi(s), melestarikan format teks dan menggunakan pure JavaScript atau jQuery library.
Berikut ini adalah minimalis kerangka implementasi menggunakan paling sedikit baris kode yang saya pikirkan:
Teks untuk menyalin teks input,seperti:
<input type="text" id="copyText" name="copyText">
dan, pada tombol klik teks di atas harus mendapatkan disalin ke clipboard,sehingga tombol seperti:<button type="kirim" id="copy_button" data-clipboard-target='copyText'>Copy</tombol>
script Anda harus menjadi seperti:Untuk CDN file
catatan:
ZeroClipboard.swf
danZeroClipboard.js
" file harus dalam folder yang sama sebagai file anda menggunakan fungsi ini, ATAU anda harus menyertakan seperti kita termasuk<script src=""></script>
di halaman kami.Clipboard-polyfill perpustakaan adalah polyfill modern Janji berbasis asynchronous clipboard API.
menginstal pada CLI:
impor sebagai clipboard di JS file
contoh
I'm menggunakannya di bundel dengan
memerlukan("babel-polyfill");
dan diuji pada chrome 67. Semua baik untuk produksi.html di sini
KODE:JS
anda dapat menyalin teks individu terlepas dari sebuah elemen HTML's teks.
JS murni, tanpa inline onclick, untuk dipasangkan kelas "content - copy tombol". Akan lebih nyaman, jika anda memiliki banyak elemen)
Tua browser yang mendukung:
Keduanya akan bekerja seperti pesona :),
JAVASCRIPT:
Juga dalam html,