3

私はかなり前から、テキストボックスと複数行のテキストボックスに適したスペルチェッカーを探しています。

この機能はFirefoxに組み込まれていますが、Chromeにはありません。

私はjqueryスペルチェッカーによって提供されるスペルチェックのすべてのデモをチェックしていました-badsyntaxそして私はそれが本当に素晴らしくて便利だと思います。

ここにリンクがあります http://jquery-spellchecker.badsyntax.co/

しかし、ここでの私の問題は、スペルチェッカーがphp Webサービスを利用しており、ASP.netWebアプリケーションで使用したいということです。

asp.net Webサービスを使用して実行できるようにするための回避策はありますか?

解決策を教えてください。

4

3 に答える 3

1

こんにちはみんな: Veerendra Prabhu、badsyntax; Nhunspell と asp.net Web サービス (.asmx) を統合しましたが、現在 jquery スペルチェッカーを統合しようとしています - badsyntax をプロジェクトに、私は jquery スペルチェッカーを Web サービスに接続していますが、まだ返されたデータを処理していますjquery スペルチェッカーがその魔法を実行できるようにする私の Web サービスのタイプですが、私はそれが何かだと思います。

私は以下からアイデアを得ました:

deepinthecode.com

ここに私が使用したいくつかのアイデアがあります:

渡されたテキスト内の間違った単語を取得し、辞書を調べるのに役立つNHusnpellを使用しました(.oxtとしてダウンロードされたオープンオフィスですが、en_US.affとen_US.dicを取得するにはzipに唱える必要があります)このファイルは次の場所にある必要がありますビンディレクトリ。

Glabal.asax ファイルで、すべての作業を行う NHuspell の静的インスタンスを作成しました。

public class Global : System.Web.HttpApplication
{
    static SpellEngine spellEngine;
    static public SpellEngine SpellEngine { get { return spellEngine; } }

    protected void Application_Start(object sender, EventArgs e)
    {
        try
        {
            string dictionaryPath = Server.MapPath("Bin") + "\\";
            Hunspell.NativeDllPath = dictionaryPath;

            spellEngine = new SpellEngine();
            LanguageConfig enConfig = new LanguageConfig();
            enConfig.LanguageCode = "en";
            enConfig.HunspellAffFile = dictionaryPath + "en_us.aff";
            enConfig.HunspellDictFile = dictionaryPath + "en_us.dic";
            enConfig.HunspellKey = "";
            //enConfig.HyphenDictFile = dictionaryPath + "hyph_en_us.dic";
            spellEngine.AddLanguage(enConfig);
        }
        catch (Exception ex)
        {
            if (spellEngine != null)
                spellEngine.Dispose();
        }
    }

    ...

    protected void Application_End(object sender, EventArgs e)
    {
        if (spellEngine != null)
            spellEngine.Dispose();
        spellEngine = null;

    }
}

次に、Get_Incorrect_Words および Get_Suggestions メソッド用の ASMX Web サービスを作成しました。

 /// <summary>
/// Summary description for SpellCheckerService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]    
[ScriptService()]
public class SpellCheckerService : System.Web.Services.WebService
{      

    [WebMethod]
    //[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string get_incorrect_words(string words)
    {
        Dictionary<string, string> IncorrectWords = new Dictionary<string, string>();

        List<string> wrongWords = new List<string>();

        var palabras = words.Split(' ');

        // Check spelling of each word that has been passed to the method
        foreach (string word in palabras)
        {
            bool correct = Global.SpellEngine["en"].Spell(word);

            if (!correct){

                wrongWords.Add(word);
            }
        }

        IncorrectWords.Add("data", wrongWords[0]);

        return wrongWords[0];
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public List<string> get_suggestions(string word)
    {
        List<string> suggestions = new List<string>();
        suggestions = Global.SpellEngine["en"].Suggest(word);
        suggestions.Sort();
        return suggestions;
    }

最後に、jquery.Spellchecker.js の get_incorrect_words と get_suggestions の呼び出しを変更しました。

 /* Config
   *************************/

  var defaultConfig = {
    lang: 'en',
    webservice: {
        path: 'SpellCheckerService.asmx/get_incorrect_words'
      //,driver: 'LabNET'
    },
    local: {
      requestError: 'There was an error processing the request.',
      ignoreWord: 'Ignore word',
      ignoreAll: 'Ignore all',
      ignoreForever: 'Add to dictionary',
      loading: 'Loading...',
      noSuggestions: '(No suggestions)'
    },
    suggestBox: {
      numWords: 5,
      position: 'above',
      offset: 2,
      appendTo: null
    },
    incorrectWords: {
      container: 'body', //selector
      position: null //function
    }
  };

  var pluginName = 'spellchecker';

...

     /* Spellchecker web service
   *************************/

  var WebService = function(config) {

    this.config = config;

    this.defaultConfig = {
      url: config.webservice.path,
      //contentType: "application/json; charset=utf-8",
      type: 'POST',
      dataType: 'text',
      cache: false,
      data: JSON.stringify({
        lang: config.lang,
        driver: config.webservice.driver
      }, null,2) ,
      error: function() {
        alert(config.local.requestError);
      }.bind(this)
    };
  };

  WebService.prototype.makeRequest = function(config) {

    var defaultConfig = $.extend(true, {}, this.defaultConfig);

    return $.ajax($.extend(true, defaultConfig, config));
  };

  WebService.prototype.checkWords = function (text, callback) {
      //action: 'get_incorrect_words',
      //JSON.stringify({

      //    text: text
      //}, null, 2)

      return this.makeRequest(
          {
              data: { words: text },
              success: callback
    });
  };

  WebService.prototype.getSuggestions = function (word, callback) {
      //action: 'get_suggestions',
    return this.makeRequest({
        data: JSON.stringify({

        word: word
      }, null, 2),
      success: callback
    });
  };
于 2013-03-12T15:12:55.047 に答える
1

私はプラグインの作成者であり、他の Web サービスの実装を組み込みたいと思っています。

これは最近、Googleアラートに表示されましたが、動作することを確認できません:

于 2013-03-12T12:05:36.117 に答える