2009-12-10 37 views
7

Tôi đang tạo một ứng dụng nhập dữ liệu QC/dữ liệu dựa trên trình duyệt cho phép mọi người chỉnh sửa các tệp OCRed, tự nhiên có rất nhiều lỗi. Các khối dữ liệu được đưa vào văn bản để chúng có thể được kiểm tra, nhưng gạch chân màu đỏ chỉ xuất hiện khi người dùng tự đặt con trỏ vào một từ sai chính tả.Kiểm tra lỗi chính tả trên một vùng văn bản trong WebKit

Có cách nào để buộc WebKit thêm kiểm tra chính tả nhỏ màu đỏ gạch chân vào textareas không?

Trả lời

10

Về cơ bản, bạn cần sử dụng api lựa chọn để di chuyển điểm chèn trên mỗi từ để Safari làm nổi bật nó. Dưới đây là ví dụ để quét qua hàng nghìn từ đầu tiên ...

textarea = document.getElementById("mytextarea"); 
textarea.focus(); 

var selection = window.getSelection(); 
selection.modify("move", "backward", "line"); 
for (var i = 0; i < 1000; i++) { 
    selection.modify("move", "forward", "word"); 
} 

// Remove focus from the element, since the word under 
// the cursor won't have a misspelling marker. 
textarea.blur(); 

Mã này được gỡ bỏ từ WebKit Layout test suite.

+1

Công trình này! Cảm ơn! –

2

Tôi không biết liệu điều này có thực sự hiệu quả hay không, nhưng bạn có thể thử chơi với nội dung lựa chọn. Nói cách khác, sau khi bạn cập nhật textarea của bạn (và muốn "làm mới" nó để làm cho chương trình gạch dưới màu đỏ), bạn có thể làm điều gì đó như:

var length = document.getElementById('TEXTAREA#your').value.length; 
document.getElementById('TEXTAREA#your').setSelectionRange(0, length); 

Bạn có thể tìm thấy một chút thêm về làm thế nào để sử dụng các lựa chọn tại đây: How do I select arbitrary text on the page using javascript? hoặc qua tìm kiếm của Google.

Suy nghĩ của tôi là tạo vùng chọn (hoặc có thể xóa nó sau khi bạn tạo) có thể kích hoạt sự kiện trình duyệt khác làm cho việc kiểm tra chính tả làm mới ... nhưng đó chỉ là ý tưởng; nó có thể làm điều tương tự như thiết lập textArea.value (tức là không có gì).

+0

Đây là một ý tưởng hay. Tôi cũng đã nghĩ đến việc chạy con trỏ qua từng từ văn bản theo từng từ, nhưng điều đó có thể sẽ mất đủ thời gian để làm phiền người dùng. – sakabako

+0

Hãy cho tôi biết nếu nó hoạt động ra hay không; bây giờ bạn đã có tôi tò mò :-) – machineghost

+0

Tôi sẽ đăng bài nếu tôi cố gắng, nhưng đây là một phần nhỏ của một dự án vội vã. – sakabako

0

Có thể nếu bạn sử dụng loại tài liệu HTML5, bạn có thể sử dụng thuộc tính kiểm tra chính tả. A similar question was asked here on StackOverflow và tìm hiểu sâu hơn về thuộc tính kiểm tra chính tả.

+1

Tôi không nghĩ rằng đây là những gì tôi muốn ... –

2

Great câu trả lời từ Mark Fowler, đây là một sự cải tiến về nó:

textarea = document.getElementById("mytextarea"); 
textarea.focus(); 
var textLength = textarea.value.length; 

var selection = window.getSelection(); 
for (var i = 0; i < textLength; i++) { 
    selection.modify("move", "backward", "character"); 
} 

// Remove focus from the element, since the word under 
// the cursor won't have a misspelling marker. 
textarea.blur(); 

Vì vậy, bạn có thể tránh được độc đoán năm 1000 số lượng và nó có thể xử lý nhiều dòng.

Các vấn đề liên quan