Tôi đang viết một addon Firefox được kích hoạt bất cứ khi nào một từ được tô sáng. Tuy nhiên tôi cần một kịch bản phát hiện khi một từ được tô sáng, và tôi bị kẹt. Một ví dụ sẽ là nytimes.com (khi bạn đang đọc một bài báo và bạn đánh dấu một từ, biểu tượng tham chiếu bật lên). Tuy nhiên, kịch bản nytimes.com là siêu phức tạp. Tôi 16 tuổi và không có nhiều lập trình viên, vì vậy đó chắc chắn là cách ra khỏi giải đấu của tôi.Javascript: Cách phát hiện xem một từ có được đánh dấu là
Trả lời
Đây là một kịch bản:
<script language=javascript>
function getSelText()
{
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
document.aform.selectedtext.value = txt;
}
</script>
<input type="button" value="Get selection" onmousedown="getSelText()">
<form name=aform >
<textarea name="selectedtext" rows="5" cols="20"></textarea>
</form>
Courtesy của Bộ luật Toad:
http://www.codetoad.com/javascript_get_selected_text.asp
Trong trường hợp của bạn, bạn sẽ muốn gọi kịch bản này khi lựa chọn được thực hiện, và sau đó bạn Tuy nhiên, bạn có thể xử lý nó theo yêu cầu của AJAX để lấy thông tin liên quan, ví dụ như NYtimes có thể làm.
Cách dễ nhất để thực hiện việc này là phát hiện các sự kiện mouseup
và keyup
sự kiện trên tài liệu và kiểm tra xem có bất kỳ văn bản nào được chọn hay không. Sau đây sẽ làm việc trong tất cả các trình duyệt chính.
Ví dụ: http://www.jsfiddle.net/timdown/SW54T/
function getSelectedText() {
var text = "";
if (typeof window.getSelection != "undefined") {
text = window.getSelection().toString();
} else if (typeof document.selection != "undefined" && document.selection.type == "Text") {
text = document.selection.createRange().text;
}
return text;
}
function doSomethingWithSelectedText() {
var selectedText = getSelectedText();
if (selectedText) {
alert("Got selected text " + selectedText);
}
}
document.onmouseup = doSomethingWithSelectedText;
document.onkeyup = doSomethingWithSelectedText;
Nhưng nếu bạn muốn phát hiện xem một từ cụ thể có được chọn không? Giả sử bạn có 'foo' trên trang nhiều lần và người dùng chọn' foo' làm cách nào để biết từ nào người dùng đã chọn? – Jespertheend
Sử dụng rangy.js và jQuery:
$('#elem').on('keyup mouseup', function(){
var sel = rangy.getSelection()
if (sel.rangeCount === 0 || sel.isCollapsed) return
alert(sel.toString())
})
Sử dụng đoạn mã sau
(function() {
"use strict";
var showSelectedText = function (e) {
var text = '';
if (window.getSelection) {
text = window.getSelection();
} else if (document.getSelection) {
text = document.getSelection();
} else if (document.selection) {
text = document.selection.createRange().text;
}
console.log(text.toString());
}
document.onmouseup = showSelectedText;
if (!document.all) {
document.captureEvents(Event.MOUSEUP);
}
})();
- 1. Cách đánh dấu một lớp là Không được chấp nhận?
- 2. Phát hiện xem HttpModule có được nạp
- 3. Một Firefox javascript đánh dấu vấn đề
- 4. Phát hiện xem ứng dụng Flash có được tải đúng cách bằng Javascript không?
- 5. Cách phát hiện xem hình ảnh có được chạm vào
- 6. Cách phát hiện xem $ _POST có được đặt không?
- 7. Javascript: Phát hiện xem văn bản có bị quấn
- 8. Cách xem mã của phương thức được đánh dấu là MethodImplOptions.InternalCall?
- 9. JavaScript: Xóa đánh dấu chuột hiện tại khỏi trang?
- 10. Phục hồi một thực thể được đánh dấu là EntityState.Delete?
- 11. Cách phát hiện xem Vista UAC có được bật không?
- 12. Phát hiện xem trang web có chuyển hướng javascript không
- 13. Lỗi - không được đánh dấu là serializable
- 14. Tôi có thể đánh dấu một trường không hợp lệ từ javascript không?
- 15. Đánh dấu: Tại sao có nhiều triển khai ngôn ngữ đánh dấu "Đánh dấu"?
- 16. cách phát hiện xem video html5 có được phát nội tuyến
- 17. Làm cách nào để kiểm tra xem một số có được đánh giá là vô cùng không?
- 18. Đánh dấu luồng đầu vào được đánh dấu là giới hạn đọc
- 19. svn diff: tệp được đánh dấu là loại nhị phân
- 20. Tự động phát hiện dấu phân tách CSV trong Javascript
- 21. javascript: phát hiện xem chủ đề cửa sổ XP hoặc Classic có được bật không
- 22. Cách đánh dấu một hội đồng .net là an toàn?
- 23. C++ - Phát hiện xem tệp có là PNG hay JPEG
- 24. Việc thực hiện đánh dấu chuẩn là gì?
- 25. Phát hiện xem loại có phải là std :: tuple không?
- 26. Có cách nào để phát hiện xem tệp javascript bên ngoài có được tải đầy đủ không?
- 27. Bộ sưu tập UserControl không được đánh dấu là serializable
- 28. là phát hiện loại mime là cách tốt nhất để phát hiện một loại tệp?
- 29. Phát hiện nếu điểm đánh dấu nằm trong lớp phủ vòng tròn trên Google Maps (Javascript API V3)
- 30. Cách phát hiện xem Micrô có hiện diện không
Tôi tiếp tục nhìn thấy mã này trên SO, và đó là sai: 'cửa sổ. getSelection() 'trả về một đối tượng' Selection', không phải là một chuỗi. –
@tim xuống không phải toàn bộ sự thật. Đối tượng có phương thức toString(). Khi một chuỗi được mong đợi một chuỗi được trả về, nếu không, khi bạn chỉ ra một đối tượng được trả về. https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection –
@TedCohen: Đúng là đối tượng 'Selection' có thực thi' toString() 'hợp lý nhưng phần còn lại của bạn bình luận không có ý nghĩa: đối tượng 'Selection' luôn được trả về nếu' window.getSelection' tồn tại (nó có trong tất cả các trình duyệt hiện đại). –