Tôi đang mô phỏng trình soạn thảo văn bản trong dự án của tôi với dấu mũ tùy chỉnh, nhưng chọn gốc. Có cách nào để phát hiện người dùng đã chọn văn bản theo hướng nào? Giả sử người dùng đó đã chọn văn bản "hello world". Có hai khả năng, anh ta có thể bắt đầu bằng cách nhấp chuột vào chữ 'd' và kết thúc bằng chữ 'h', hoặc anh ta có thể bắt đầu bằng chữ 'h' và kết thúc bằng chữ 'd'. Có cách nào dễ dàng để phân biệt giữa hai tình huống này không? Cảm ơn bạn.Phát hiện hướng lựa chọn người dùng bằng javascript
Trả lời
Cũ câu hỏi, nhưng tôi nghĩ rằng tôi muốn thêm một giải pháp dễ dàng hơn:
var sel = getSelection(),
position = sel.anchorNode.compareDocumentPosition(sel.focusNode),
backward = false;
// position == 0 if nodes are the same
if (!position && sel.anchorOffset > sel.focusOffset ||
position === Node.DOCUMENT_POSITION_PRECEDING)
backward = true;
Node.compareDocumentPosition (MDN)
Theo như tôi biết, không có thuộc tính hoặc sự kiện nào có nguồn gốc Javascript sẽ cho bạn biết hướng đi. This site chi tiết cách theo dõi hướng chuột, bạn có thể tinh chỉnh nó theo nhu cầu của mình.
Về cơ bản, miễn là bạn có thể truy xuất vị trí chuột (với loc.pageX
hoặc Y hoặc event.clientX
hoặc Y), bạn có thể viết các chức năng của riêng mình để theo dõi hướng dựa trên vị trí và thời gian.
Trong trường hợp của bạn, bạn có thể chỉ muốn nắm bắt điều này khi người dùng có văn bản 'đã chọn', tức là trên sự kiện mousedown
.
Cảm ơn bạn, tôi đã sợ, rằng tôi sẽ phải làm điều đó :) – Ondra
Có thể. https://stackoverflow.com/a/12652116/96100 –
@TimDown Chắc chắn điều đó có thể và liên kết tôi đã cung cấp có một cách tiếp cận. Chỉ có không phải là một * native * chức năng/tài sản (ví dụ như window.mouseDirection) cung cấp cho nó cho bạn; bạn cần tạo mã tùy chỉnh, như trong ví dụ của bạn. – Igor
theo dõi offet mousedown X và sau đó là mouseup X bù đắp, và kết quả cho thấy sự chỉ đạo: (sử dụng jQuery)
var textSelectionDirection = (function(){
var direction = '', mouseDownOffset = null;
function getDirection(e){
if(e.type == 'mousedown')
mouseDownOffset = e.clientX;
else if(e.type == 'mouseup'){
direction = e.clientX < mouseDownOffset ? 'left' : 'right';
console.log(direction);
}
}
return getDirection
})();
$(document).on('mousedown mouseup', textSelectionDirection);
hiện tại chỉ hoạt động với các lựa chọn chuột chứ không phải bàn phím – vsync
này nên làm việc:
function isBackwards(sel) {
var rg = document.createRange();
rg.setStart(sel.anchorNode, sel.anchorOffset);
rg.setEnd(sel.focusNode, sel.focusOffset);
return !rg.toString();
}
Lưu ý: Nếu bạn cho phép lựa chọn không có gì ngoài các khoảng ngắt và khoảng trống, bạn cần phải sửa đổi chức năng ở trên vì nó sẽ trả về true
trong trường hợp này, bất kể là gì.
Không hoạt động trong một nút văn bản đơn lẻ. Chỉ hoạt động nếu nút bắt đầu và kết thúc không giống nhau. – Jordan
Tôi đã cố gắng để tìm một giải pháp mà làm việc cho tôi cho một vài ngày. Dưới đây là những gì tôi đã đưa ra, điều này sẽ làm việc với nhiều lựa chọn duy nhất:
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var isSelectionDown = selection.focusNode === range.endContainer;
var isSelectionUp = selection.focusNode === range.startContainer;
Nút trọng tâm của sự lựa chọn luôn nơi người dùng nhả chuột, nhưng khi kết thúc loạt và bắt đầu container thay đổi tùy thuộc vào hướng.
Chỉ hoạt động nếu lựa chọn kéo dài nhiều nút. Nếu không phải là một vấn đề sau đó có thể được giảm xuống: 'var isReverse = selection.anchorNode! == selection.getRangeAt (0) .startContainer; ' – Pocketsand
- 1. Thực hiện lựa chọn người dùng của chủ đề
- 2. phát hiện vị trí kết thúc lựa chọn bằng cách sử dụng javascript
- 3. Phát hiện hủy trong điều hướng bằng Javascript hoặc jQuery
- 4. phát hiện chuyển hướng bằng javascript - cách thực hiện?
- 5. Chèn Thẻ Tùy chỉnh vào Lựa chọn Người dùng
- 6. Phát hiện người dùng trực tuyến?
- 7. Phát hiện thay đổi lựa chọn trên UITextView?
- 8. Javascript: Làm cách nào để mở rộng lựa chọn người dùng dựa trên các thẻ html?
- 9. Phát hiện cơ thể người trong Javascript
- 10. Tự động phát hiện thời gian cục bộ hiện tại của người dùng bằng JavaScript hoặc PHP
- 11. Bạn có thể đặt và/hoặc thay đổi lựa chọn văn bản của người dùng bằng JavaScript không?
- 12. Cách phát hiện liên lạc của người dùng bằng điện thoại bằng cách sử dụng JS
- 13. lựa chọn thay thế JavaScript
- 14. Cách phát hiện ngôn ngữ của người dùng
- 15. Tắt hướng nhưng phát hiện hướng
- 16. Phát hiện adblock và javascript
- 17. Phát hiện cử chỉ của người dùng như vuốt
- 18. Kích hoạt sự kiện khi người dùng điều hướng đi
- 19. JavaScript có thể phát hiện khi người dùng ngừng tải tài liệu không?
- 20. Làm cách nào để phát hiện xem người dùng đã truy cập trang bằng chuyển hướng quy tắc chuyển hướng JSF hay bằng cách nhập URL?
- 21. Phát hiện chuỗi/ngôn ngữ nhập của người dùng
- 22. MySQL chọn của người dùng
- 23. Biểu mẫu chuyển hướng đến URL khác nhau dựa trên phần tử lựa chọn lựa chọn
- 24. Phát hiện thay đổi của tab trình duyệt bằng javascript
- 25. Javascript để phát hiện xem người dùng có thay đổi tab
- 26. JavaScript có thể phát hiện xem trình duyệt của người dùng có hỗ trợ gzip không?
- 27. Phát hiện khi người dùng chọn văn bản trong vùng văn bản
- 28. Phát hiện nếu người dùng "bỏ chọn" điểm đánh dấu trên bản đồ google
- 29. AutoCompleteTextView phát hiện khi mục nhập đã chọn từ danh sách do người dùng chỉnh sửa
- 30. Phát hiện hướng cử chỉ vuốt bằng Leap Motion
Tôi không nghĩ rằng đối tượng lựa chọn đủ thông minh cho việc này. Bạn sẽ phải ghi lại các vị trí nhấp chuột và tự mình tìm ra vị trí này. –
@Diodeus Làm cho câu trả lời đó để anh ta có thể chấp nhận nó. Và (at) OP Hãy thử và thêm một setters tùy chỉnh và getters cho những hành động bằng cách sử dụng mặc định và thêm tính toán vị trí chuột quá nó. – Relic
Có thể. https://stackoverflow.com/a/12652116/96100 –