Tôi đang xử lý sự kiện dblclick trên một khoảng trong ứng dụng web của mình. Tác dụng phụ là nhấp đúp sẽ chọn văn bản trên trang. Làm thế nào tôi có thể ngăn chặn lựa chọn này xảy ra?Ngăn việc chọn văn bản sau khi nhấp đúp vào
Trả lời
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
Bạn cũng có thể áp dụng những phong cách đến khoảng cho tất cả các trình duyệt không phải IE và IE10:
span.no_selection {
-webkit-user-select: none; /* webkit (safari, chrome) browsers */
-moz-user-select: none; /* mozilla browsers */
-khtml-user-select: none; /* webkit (konqueror) browsers */
-ms-user-select: none; /* IE10+ */
}
hay, trên mozilla:
document.body.onselectstart = function() { return false; } // Or any html object
Mở IE,
document.body.onmousedown = function() { return false; } // valid for any html object as well
Một hàm Javascript đơn giản làm cho c ontent bên trong một trang phần tử unselectable:
function makeUnselectable(elem) {
if (typeof(elem) == 'string')
elem = document.getElementById(elem);
if (elem) {
elem.onselectstart = function() { return false; };
elem.style.MozUserSelect = "none";
elem.style.KhtmlUserSelect = "none";
elem.unselectable = "on";
}
}
Trong javascript đơn giản:
element.addEventListener('mousedown', function(e){ e.preventDefault(); }, false);
Hoặc với jQuery:
jQuery(element).mousedown(function(e){ e.preventDefault(); });
Vâng, tôi đã sử dụng điều này để giải quyết cùng một vấn đề mà tôi gặp phải (+1), ngoại trừ 'return false' đã sử dụng' event.preventDefault() ', không giết bất kỳ trình xử lý nào khác mà bạn có thể có trên mousedown. –
Điều này không hoạt động trong IE cho tôi. –
cảm ơn, nó đã giúp tôi rất nhiều! – varnie
Để ngăn chặn IE 8 CTRL và phím SHIFT nhấp chuột lựa chọn văn bản trên yếu tố cá nhân
var obj = document.createElement("DIV");
obj.onselectstart = function(){
return false;
}
Để tránh lựa chọn văn bản trên tài liệu
window.onload = function(){
document.onselectstart = function(){
return false;
}
}
Để tránh lựa chọn văn bản chỉ sau một cú nhấp kép:
Bạn có thể sử dụng MouseEvent#detail
tài sản. Đối với các sự kiện di chuột hoặc chuột, nó là 1 cộng với số lần nhấp hiện tại.
document.addEventListener('mousedown', function (event) {
if (event.detail > 1) {
event.preventDefault();
}
}, false);
Xem https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
Điều này thật tuyệt vời! Làm việc trong Firefox 53. – Zaroth
Cũ chủ đề, nhưng tôi đã đưa ra một giải pháp mà tôi tin là sạch hơn vì nó không vô hiệu hóa tất cả thậm chí ràng buộc cho đối tượng, và chỉ ngăn chặn các lựa chọn văn bản ngẫu nhiên và không mong muốn trên trang. Nó là đơn giản, và hoạt động tốt cho tôi. Đây là một ví dụ; Tôi muốn ngăn việc chọn văn bản khi tôi nhấp vào một vài thời gian trên đối tượng với lớp "mũi tên phải":
$(".arrow-right").hover(function(){$('body').css({userSelect: "none"});}, function(){$('body').css({userSelect: "auto"});});
HTH!
Tôi đã gặp vấn đề tương tự. Tôi đã giải quyết nó bằng cách chuyển sang <a>
và thêm onclick="return false;"
(để nhấp vào nó sẽ không thêm mục nhập mới vào lịch sử trình duyệt).
- 1. Làm cách nào để ngăn văn bản chọn bên ngoài canvas HTML5 khi nhấp đúp?
- 2. Xóa văn bản sau khi nhấp vào hộp văn bản
- 3. Làm thế nào để ngăn chặn sự kích đúp vào chọn văn bản trong javascript
- 4. Chọn văn bản giống như "Ctrl + A" khi nhấp vào văn bản?
- 5. Ngăn ngừa tình cờ nhấp đúp vào một nút
- 6. C# làm cách nào tôi có thể chọn tất cả văn bản trong hộp văn bản khi tôi nhấp đúp?
- 7. Chọn tất cả văn bản trong nhập văn bản HTML khi nhấp vào
- 8. Ngăn việc chọn văn bản trên các nút bấm nhanh
- 9. jQuery .load() Cách ngăn tải hai lần từ việc nhấp đúp vào
- 10. Nhấp đúp vào hàng DataGridView?
- 11. Ngăn chặn nhấp đúp vào nút có knockout.js
- 12. mục DataGridView nhấp đúp vào
- 13. Câu hỏi về khả năng sử dụng HTML - (nhấp đúp) để chọn văn bản
- 14. jQuery ngăn các sự kiện khác sau khi nhấp vào
- 15. Javafx 2 nhấp và nhấp đúp vào
- 16. Nhấp vào văn bản để chọn nút radio tương ứng
- 17. Xóa con trỏ trong Văn bản tuyệt vời sau khi nhấn Ctrl + nhấp vào
- 18. Thay đổi văn bản nút sau khi nhấp, sau đó thay đổi lại sau khi nhấp lại
- 19. Có văn bản rõ ràng khi bạn nhấp vào nó
- 20. OpenLayers: vô hiệu hóa phóng to khi nhấp đúp vào
- 21. Nhấp đúp vào vs java -jar MyJar.jar
- 22. Thoát/tắt chế độ chỉnh sửa sau khi nhấp đúp vào sự kiện được xử lý
- 23. Tùy chỉnh định dạng ô PHPExcel chỉ hiển thị sau khi nhấp đúp vào
- 24. Ngăn chặn popToRootViewController tự động khi nhấn đúp vào UITabBarController
- 25. Nhấp đúp vào Điều khiển nhãn .NET sao chép văn bản của nó vào khay nhớ tạm trên Vista +?
- 26. Nhấp đúp vào Làm Nổi bật
- 27. nhận địa chỉ sau khi nhấp vào bản đồ
- 28. ASP.Net nhấp đúp vào vấn đề
- 29. ghi đè JTree nhấp đúp để ngăn mở rộng nút?
- 30. NSImageView nhấp đúp vào hành động
Có cách nào thực sự ngăn việc lựa chọn trái với việc xóa lựa chọn sau khi thực tế không? Ngoài ra, câu lệnh if thứ hai của bạn có thể nằm trong cái khác nếu để dễ đọc hơn. – David
CSS trông tuyệt vời! Bất kỳ ý tưởng nếu có một cái gì đó tương tự có sẵn cho IE? – David
Xin lỗi về sự lộn xộn với niềng răng; Tôi lấy mã đó từ một trang khác mà không kiểm tra. Đã sửa. Không có IE tương đương, tôi sợ. –