Hãy nói rằng tôi có một văn bản với nhãn hiệu, chẳng hạn như:Làm thế nào để vô hiệu hóa lựa chọn một số văn bản trong div?
Và tôi muốn vô hiệu hoá chọn như vậy mà bắt đầu hoặc kết thúc lựa chọn không nằm trong dấu. Do đó, tất cả những lựa chọn nên có thể:
Mặt khác, những lựa chọn nên được vô hiệu hóa:
Cho đến nay, tôi chỉ cố gắng sử dụng một số css đơn giản,
mark {
-khtml-user-select: all;
-webkit-user-select: all;
-o-user-select: all;
user-select: all;
}
This is <mark>marked text</mark>. I want to disable selecting only part of <mark>marked text</mark>.
Có cách nào để làm điều này? Bất kỳ câu trả lời sẽ được đánh giá cao!
Tôi đã đạt được những gì tôi muốn làm, vì vậy tôi chia sẻ ở đây.
function checkSelection() {
var sel = window.getSelection();
var marks = document.getElementsByTagName('mark');
for(var i = 1; i < sel.rangeCount; i++) {
sel.removeRange(sel.getRangeAt(i));
}
var range = sel.getRangeAt(0);
var startnode = range.startContainer;
var endnode = range.endContainer;
for (var i = 0; i < marks.length; i++) {
\t if (marks[i].contains(startnode)) {
range.setStartBefore(startnode);
}
\t if (marks[i].contains(endnode)) {
range.setEndAfter(endnode);
}
}
}
document.addEventListener('mouseup', checkSelection)
document.addEventListener('touchend', checkSelection)
This is <mark>marked text</mark>. I want to disable selecting only part of <mark>marked text</mark>.
Tôi không thấy bất kỳ cách đơn giản nào để thực hiện việc này. Bạn sẽ phải phân tích cú pháp văn bản, sử dụng các sự kiện chuột, thêm các lớp học, v.v. – kemotoe
Bạn có thể gửi một số báo cáo lỗi và hy vọng các nhà cung cấp trình duyệt sửa chữa nó. https://drafts.csswg.org/css-ui-4/#valdef-user-select-all "Nếu lựa chọn sẽ chứa một phần của phần tử, thì lựa chọn phải chứa toàn bộ phần tử bao gồm tất cả các phần tử con của nó" - nó không nói bất cứ điều gì về việc chọn phải bắt đầu bằng một cú nhấp chuột (MDN cho chúng tôi biết) –
Về phần "Có cách nào để thực hiện việc này không", hãy xem https://stackoverflow.com/questions/985272/selecting- text-in-an-element-akin-to-highlight-với-chuột-bạn (có) –