如何在JavaScript中检测textarea中的拼写错误?是否有与此相关的事件?如何访问Chrome针对拼写错误的单词的拼写检查建议?
答案 0 :(得分:26)
如何访问Chrome的拼写错误拼写检查建议?
据我所知,you cannot。为了更全面地回答,我还提到了相关问题:
是否有与此相关的事件?
不,contextmenu
事件也没有提供任何有用的信息:它没有拼写检查信息,你也无法阅读上下文菜单项列表(可能包含拼写建议)。 change
事件也不提供拼写检查信息。
如何在JavaScript中检测textarea中的拼写错误?
您可以自己编码或使用第三方库。关于此主题还有其他Stack Overflow问题,您也可以自己搜索。相关的Stack Overflow问题包括:
答案 1 :(得分:18)
由于这个问题似乎有点宽泛且容易解释(特别是当前的赏金 - '要求'),我将首先解释我如何解释它并尝试回答这些问题。过程(Q / A风格)。
你似乎在问:
" Google Chrome" /" Chromium"具体:
问:如果浏览器"谷歌浏览器" /" Chromium" 公开一个拼写检查API ,您可以通过公共网页中
有一个特定于铬的Spellcheck API Proposal(从2012年12月开始)。
以下是其中的一部分:
此API可以成为网络平台的一部分吗?
拼写检查不太可能成为网络平台的一部分。
更重要的是,它只有一种称为“加载字典”的方法
:loadDictionary( myDictionaryFile // string path or URL
, dictionaryFormat // enumerated string [ "hunspell" (concatentation of .aff and .dic files)
// , "text" (plain text)
// ]
) // returns int indicating success or an error code in loading the dictionary.
重点是什么?帮助社区为Zulu,Klingon等创建自定义词典,因为大约20-30%的Spellcheck错误支持关于不受支持的语言。
现在让我们不要将Chrome的 SpellCheck API (上图)与Chrome / Webkit的 SpellCheck API 混淆(嗯?说什么?):
Hironori Bono(谷歌浏览器的软件工程师)proposed an API大约在2011年,一些related bug rapports和patch在Chrome中是(/仍然是?)。
void addSpellcheckRange( unsigned long start
, unsigned long length
, DOMStringList suggestions
// [, unsigned short options]
);
void removeSpellcheckRange(SpellcheckRange range);
用法示例:
var input = document.querySelector('input');
input.addSpellcheckRange( 4
, 9
, [ 'Chrome'
, 'Firefox'
, 'Opera'
, 'Internet Explorer'
]
);
来源:
http://html5-demos.appspot.com/static/html5-whats-new/template/index.html#42,
http://peter.sh/experiments/spellcheck-api/(如果此API仍有效,您应该可以在那里试用它。)
关键点?经过几天的考虑后,它突然点击了:自定义拼写检查与浏览器集成 - 使用浏览器的上下文菜单,而不是阻止它并提供自己的。因此可以将其与现有的外部拼写检查库链接起来。
以上历史和实验API显然从未直接支持您想要完成的任务。
一般:
问:如何在JavaScript中检测textarea中的拼写错误
A: Internet Explorer允许使用拼写检查程序
通过ActiveX集成到Microsoft Word中,如下所示
代码段。
function CheckText(text) {
var result = new Array;
var app = new ActiveXObject('Word.Application');
var doc = app.Documents.Add();
doc.Content = text;
for (var i = 1; i <= doc.SpellingErrors.Count; i++) {
var spellingError = doc.SpellingErrors.Item(i);
for (var j = 1; j <= spellingError.Words.Count; j++) {
var word = spellingError.Words.Item(j);
var error = {};
error.word = word.Text;
error.start = word.Start;
error.length = word.Text.length;
error.suggestions = new Array;
var suggestions = word.GetSpellingSuggestions();
for (var k = 1; k <= suggestions.Count; k++) {
error.suggestions.push(suggestions.Item(k).Name);
}
result.push(error);
}
}
return result;
}
来源:https://lists.w3.org/Archives/Public/public-webapps/2011AprJun/0516.html
但是IE / ActiveX / MS-Word并不是你所要求的,也不是非常跨平台/浏览器,让我们使用本地javascript拼写检查库:
Javascript Spell Checking Methods
http://code.google.com/p/bjspell/
http://www.javascriptspellcheck.com/
http://ejohn.org/blog/revised-javascript-dictionary-search/
等
比较/解释它们实际上超出了这个答案的范围
值得注意的是你希望使用哪种字典格式!
或者可以使用外部拼写检查API服务(服务器处理数据并使用AJAX与之通信)。 显然,您需要考虑隐私问题!
赏金 - &#39;要求&#39;请求:
希望这有帮助!
答案 2 :(得分:0)
例如,您可以禁用内部浏览器拼写检查并集成任何其他开源拼写检查库 JavaScript SpellCheck。它包含深度集成所需的所有事件,请查看API page。