keluaran di Chrome :
<div id="content" contenteditable="true" style="border:1px solid #000;width:500px;height:40px;">
hey
<div>what's up?</div>
<div>
<button id="insert_caret"></button>
Saya percaya FF akan terlihat seperti ini:
hey
<br />
what's up?
dan di IE :
hey
<p>what's up?</p>
sayangnya, tidak ada cara yang baik untuk membuatnya sehingga setiap browser memasukkan <br />
bukan div- atau p-tag, atau setidaknya saya tidak dapat menemukan apa pun secara online.
TETAPI, yang saya coba lakukan sekarang adalah, ketika saya menekan tombol , saya ingin tanda sisipan disetel di akhir teks, jadi akan terlihat seperti ini:
hey
what's up?|
cara apa pun untuk melakukan ini agar berfungsi di semua browser ?
contoh:
$(document).ready(function()
{
$('#insert_caret').click(function()
{
var ele = $('#content');
var length = ele.html().length;
ele.focus();
//set caret -> end pos
}
}
javascript
html
cross-browser
contenteditable
caret
Josh Crozier
sumber
sumber
Jawaban:
Fungsi berikut akan melakukannya di semua browser utama:
Menempatkan tanda sisipan di awal hampir sama: hanya perlu mengubah Boolean yang diteruskan menjadi panggilan ke
collapse()
. Berikut adalah contoh yang membuat fungsi untuk menempatkan tanda sisipan di awal dan di akhir:sumber
window.getSelection
dandocument.createRange
. ThecreateTextRange
cabang untuk versi lama dari Internet Explorer.window.getSelection
tidak didukung oleh 0,29% dari semua browser (IE> 8). lihat: caniuse.com/#search=window.getSelectioneditablecontent="true"
...?placeCaretAtEnd(this);
tidak akan berhasil untuk saya.Sayangnya, jawaban Tim yang luar biasa bekerja untuk saya hanya untuk menempatkan di akhir, untuk menempatkan di awal saya harus sedikit memodifikasinya.
Namun tidak yakin apakah
focus()
danselect()
benar-benar dibutuhkan.sumber
Contoh (langsung) ini menunjukkan fungsi sederhana yang singkat
setCaretAtStartEnd
, yang membutuhkan dua argumen; Node (dapat diedit) untuk menempatkan tanda sisipan di & Boolean yang menunjukkan di mana harus meletakkannya (awal atau akhir node)sumber
Jika Anda menggunakan kompiler penutupan google, Anda dapat melakukan hal berikut (agak disederhanakan dari jawaban Tim):
Inilah hal yang sama di ClojureScript:
Saya telah menguji ini di Chrome, Safari dan FireFox, tidak yakin tentang IE ...
sumber