Di sebagian besar browser, ini dapat dicapai dengan menggunakan variasi kepemilikan pada user-select
properti CSS , yang awalnya diusulkan dan kemudian ditinggalkan di CSS 3 dan sekarang diusulkan di CSS UI Level 4 :
*.unselectable {
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
/*
Introduced in Internet Explorer 10.
See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/
*/
-ms-user-select: none;
user-select: none;
}
Untuk Internet Explorer <10 dan Opera <15, Anda harus menggunakan unselectable
atribut elemen yang Anda inginkan tidak dapat dipilih. Anda dapat mengatur ini menggunakan atribut dalam HTML:
<div id="foo" unselectable="on" class="unselectable">...</div>
Sayangnya properti ini tidak diwarisi, artinya Anda harus meletakkan atribut di tag awal setiap elemen di dalamnya <div>
. Jika ini masalah, Anda bisa menggunakan JavaScript untuk melakukan ini secara rekursif untuk keturunan elemen:
function makeUnselectable(node) {
if (node.nodeType == 1) {
node.setAttribute("unselectable", "on");
}
var child = node.firstChild;
while (child) {
makeUnselectable(child);
child = child.nextSibling;
}
}
makeUnselectable(document.getElementById("foo"));
Pembaruan 30 April 2014 : Traversal pohon ini perlu dijalankan kembali setiap kali elemen baru ditambahkan ke pohon, tetapi tampaknya dari komentar oleh @Han bahwa mungkin untuk menghindari ini dengan menambahkan mousedown
event handler yang menetapkan unselectable
target dari peristiwa. Lihat http://jsbin.com/yagekiji/1 untuk detailnya.
Ini masih belum mencakup semua kemungkinan. Meskipun tidak mungkin untuk memulai pemilihan dalam elemen yang tidak dapat dipilih, di beberapa browser (Internet Explorer dan Firefox, misalnya) masih tidak mungkin untuk mencegah pilihan yang dimulai sebelum dan berakhir setelah elemen yang tidak dapat dipilih tanpa membuat seluruh dokumen tidak dapat dipilih.