Khi chọn khối văn bản (có thể trải rộng trên nhiều nút DOM), bạn có thể trích xuất văn bản và nút đã chọn bằng Javascript không?Nhận văn bản đã chọn và các nút đã chọn trên một trang?
Imagine mã HTML này:
<h1>Hello World</h1><p>Hi <b>there!</b></p>
Nếu người dùng đã khởi xướng một sự kiện mouseDown bắt đầu từ "World ..." và sau đó một mouseUp thậm chí ngay sau khi "đó!", Tôi hy vọng nó sẽ trở lại :
Text : { selectedText: "WorldHi there!" },
Nodes: [
{ node: "h1", offset: 6, length: 5 },
{ node: "p", offset: 0, length: 16 },
{ node: "p > b", offset: 0, length: 6 }
]
Tôi đã thử đưa HTML vào văn bản nhưng điều đó sẽ chỉ đưa cho tôi văn bản đã chọn. Tôi đã không thử các yếu tố <canvas>
nhưng đó có thể là một lựa chọn khác.
Nếu không phải JavaScript, có cách nào có thể sử dụng tiện ích mở rộng của Firefox không?
bạn chuyển cho parentContainer như thế nào? Tôi không làm cho nó hoạt động (phương pháp parentContainer) –
Rất tiếc. Không phải rất rõ ràng nhưng đó phải là một phạm vi, tôi đã cố định tên biến. Tôi đã nghĩ rằng nó có thể được sử dụng như thế này: var container = parentContainer (getRange()); Điều này không có nghĩa là nó sẽ hoạt động 100%. Mã này được dự định là một ví dụ về loại công việc cần thiết để thực hiện việc này và có thể được tìm thấy. Bạn sẽ muốn hiểu các API bạn đang xử lý (xem liên kết). – Borgar
'parentContainer()' là vô ích: hai nhánh không được đảm bảo trả về cùng một điều vì phương thức 'parentElement()' của IE 'TextRange' sẽ luôn trả về một phần tử trong khi' commonAncestorContainer' có thể là một nút văn bản. Ngoài ra, không cần phải có bất kỳ trình duyệt sniffing (như ngụ ý bằng cách sử dụng 'msie'): bạn có thể dễ dàng phát hiện các đối tượng và phương pháp bạn cần. –