2009-12-10 19 views
7

में एक टेक्स्टरेरा पर फोर्स स्पेल चेक मैं ब्राउज़र आधारित क्यूसी/डेटा एंट्री ऐप बना रहा हूं जो लोगों को ओसीआरएड फाइलों को संपादित करने देगा, जो स्वाभाविक रूप से बहुत सारी त्रुटियां हैं। डेटा के हिस्सों को टेक्स्टरेस में रखा जाता है ताकि उन्हें चेक किया जा सके, लेकिन लाल रेखांकन केवल तब दिखाई देते हैं जब उपयोगकर्ता मैन्युअल रूप से कर्सर को गलत वर्तनी वाले शब्द में रखता है।वेबकिट

क्या टेक्स्टकिरा को थोड़ा लाल वर्तनी जांच रेखांकन जोड़ने के लिए वेबकिट को मजबूर करने का कोई तरीका है?

उत्तर

10

अनिवार्य रूप से आपको सफारी को हाइलाइट करने के लिए प्रत्येक शब्द पर सम्मिलन बिंदु को स्थानांतरित करने के लिए चयन एपीआई का उपयोग करने की आवश्यकता है। यहाँ पहले हजार शब्दों से अधिक स्कैन करने के लिए एक उदाहरण है ...

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(); 

इस कोड WebKit Layout test suite से हटा लिया गया था।

+1

यह काम करता है! धन्यवाद! –

2

मुझे नहीं पता कि यह वास्तव में काम करेगा या नहीं, लेकिन आप चयन सामग्री के साथ खेलना चाहेंगे। दूसरे शब्दों में, यदि आप अपने पाठ क्षेत्र अद्यतन करने के बाद (और "ताज़ा" करना चाहते हैं यह लाल रेखांकन शो बनाने के लिए), आप की तरह कुछ करने के लिए सक्षम हो सकता है:

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

आप थोड़ा पर कैसे करने के लिए और अधिक प्राप्त कर सकते हैं यहां चयन का उपयोग करें: How do I select arbitrary text on the page using javascript? या Google खोज के माध्यम से।

मेरी सोच यह है कि चयन करना (या इसे बनाने के बाद इसे साफ़ करना) एक अलग ब्राउज़र ईवेंट ट्रिगर कर सकता है जो वर्तनी जांच रीफ्रेश करता है ... लेकिन यह सिर्फ एक विचार है; यह textArea.value (यानी कुछ भी नहीं) सेट करने के समान ही सटीक चीज कर सकता है।

+0

यह एक अच्छा विचार है। मैं शब्द द्वारा प्रत्येक टेक्स्टरेरा शब्द के माध्यम से कर्सर चलाने की भी सोच रहा था, लेकिन शायद उपयोगकर्ता को परेशान करने के लिए पर्याप्त समय लगेगा। – sakabako

+0

मुझे बताएं कि यह काम करता है या नहीं; अब आप मुझे उत्सुक बना चुके हैं :-) – machineghost

+0

यदि मैं कोशिश करता हूं तो मैं पोस्ट करूंगा, लेकिन यह एक प्रोजेक्ट का एक छोटा सा हिस्सा है। – sakabako

0

यह संभव है कि यदि आप HTML5 Doctype का उपयोग करते हैं, तो आप वर्तनी जांच विशेषता का उपयोग कर सकते हैं। A similar question was asked here on StackOverflow और spellcheck विशेषता में गहराई से delves।

+1

मुझे नहीं लगता कि यह वही है जो मैं चाहता हूं ... –

2

मार्क फाउलर से महान जवाब है, यहाँ उस पर एक सुधार है:

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(); 

तो तुम मनमाने ढंग से 1000 नंबर से बच सकते हैं और यह कई पंक्तियों संभाल कर सकते हैं।