如何在JavaScript中访问Chrome拼写检查建议

时间:2015-06-08 08:21:22

标签: javascript google-chrome chromium spell-checking

如何在JavaScript中检测textarea中的拼写错误?是否有与此相关的事件?如何访问Chrome针对拼写错误的单词的拼写检查建议?

3 个答案:

答案 0 :(得分:26)

  

如何访问Chrome的拼写错误拼写检查建议?

据我所知,you cannot。为了更全面地回答,我还提到了相关问题:

  

是否有与此相关的事件?

不,contextmenu事件也没有提供任何有用的信息:它没有拼写检查信息,你也无法阅读上下文菜单项列表(可能包含拼写建议)。 change事件也不提供拼写检查信息。

  

如何在JavaScript中检测textarea中的拼写错误?

您可以自己编码或使用第三方库。关于此主题还有其他Stack Overflow问题,您也可以自己搜索。相关的Stack Overflow问题包括:

答案 1 :(得分:18)

由于这个问题似乎有点宽泛且容易解释(特别是当前的赏金 - '要求'),我将首先解释我如何解释它并尝试回答这些问题。过程(Q / A风格)。

你似乎在问:

" Google Chrome" /" Chromium"具体:

  1. 问:如果浏览器"谷歌浏览器" /" Chromium" 公开一个拼写检查API ,您可以通过公共网页 进行交互 A:不,不是真的(至少不是你想要的方式)。
    有一个特定于铬的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 rapportspatch在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'
                              ]
                            );
    

    from http://peter.sh/experiments/spellcheck-api/
    来源:
    http://html5-demos.appspot.com/static/html5-whats-new/template/index.html#42
    http://peter.sh/experiments/spellcheck-api/(如果此API仍有效,您应该可以在那里试用它。)

    关键点?经过几天的考虑后,它突然点击了:自定义拼写检查与浏览器集成 - 使用浏览器的上下文菜单,而不是阻止它并提供自己的。因此可以将其与现有的外部拼写检查库链接起来。

    以上历史和实验API显然从未直接支持您想要完成的任务。

  2. 问:如果" Google Chrome" /" Chromium" spellcheck-API暴露了一个' onSpellError' (例如)事件(例如)textarea
    答:如上所述,Chrome似乎没有这样的事件。
    HTM5目前仅暴露启用或禁用拼写检查支持元素的拼写检查的功能。
  3. 问:如何访问Chrome对拼写错误的单词的拼写检查建议
    A:如上所述:您似乎无法做到。它似乎与几乎重复的问题答案相同:How can I access Chrome's spell-check dictionary?
    值得注意的是," TinyMCE's spellchecker was previously provided by 'hacking' a Chrome toolbar API owned by Google, against Google's own legal usage policies. This spellchecking service has been discontinued permanently."。现在,如果你在网上搜索,你可能会发现他们是如何做到这一点的,但它似乎并不是最好的方法(并在此提倡)。 使用javascript拼写检查库,您可以使用Chrome的词典(因此您不需要维护词典)但是您必须提供这些文件并将其与您的网络应用程序一起发送(而不是提取在浏览器中安装的。)
  4. 一般:

    1. 问:如何在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与之通信)。 显然,您需要考虑隐私问题!

    2. 赏金 - &#39;要求&#39;请求:

      1. 问:明确的证据
        A:我应该找到一些关于这个主题的内容,而不是一些深奥的实验性功能。我也没有看到试图将其功能强调成某些(即将出现的)标准化方法/事件标识符等的库 如上所述,像TinyMCE这样的流行图书馆目前还没有其他解决方案 在“生活标准”中,世界是我们的游乐场所&#39;当我按下“提交”按钮时,我的回答很可能已经过时了。但即便如此,我也不会在不久的将来推荐这样一个实验性的功能。级别网站/界面。
      2. 问:并获得一个很好的答案,解释如何实现这一点 (特定铬或一般?拼写检查建议或检测到有拼写错误?)
        A:除了上述内容之外,我无法想到任何事情(除了网络开发人员目前使用的库(见4))。
      3. 希望这有帮助!

答案 2 :(得分:0)

例如,您可以禁用内部浏览器拼写检查并集成任何其他开源拼写检查库 JavaScript SpellCheck。它包含深度集成所需的所有事件,请查看API page