亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

asp.net利用Google接口實現拼寫檢查

2019-11-17 03:49:00
字體:
來源:轉載
供稿:網友
關鍵詞:拼寫檢查,SpellCheck,英語拼寫檢查
在開發一個國外外包項目時,客戶提出一個需求,就是希望在文本框中輸入單詞,在保存前能夠進行拼寫檢查,如果發現單詞錯誤,可以提醒用戶進行改正,為此,在結合參考了各種方案之后,選擇了一個免費的方案,Google的一個API接口,https://www.google.com/tbPRoxy/spell?lang=,該接口提供多種語言的拼寫檢查,并能夠返回相似的單詞,并且幸運的是,在網上找到了一個開源的程序包googiespell,所以經過簡單的包裝處理,做成了一個拼寫檢查的小控件,使用起來就很方便了。
實現原理
在.net的頁面上,在submit按鈕提交之前,將頁面的文本框內容,通過Ajax的方式,采用代理類的方式,發送給Google的接口,接口會返回拼寫結果,如果沒有拼寫錯誤,瀏覽器端就直接執行提交操作,如果有錯誤,彈出一個Spell Check Error的對話框,提示用戶進行修改,點“yes”返回頁面修改,點“No”的話就忽略掉拼寫錯誤,直接提交。
代碼分享
用戶控件Shouji138.com.SpellValid.ascx
這個文件封裝了錯誤提示的輸入框效果,還有提交按鈕的一些操作代碼。
<%@ Control Language="C#" AutoEventWireup="true" Codebehind="Shouji138.com.SpellValid.ascx.cs"
    Inherits="SpellCheck.Shouji138_com_SpellValid" %>
<script type="text/javascript">
    var googie5 = new GoogieSpellMultiple("/googiespell/", "/googiespell/sendSpellReq.aspx?lang=");
    //New menu item "Add"
    var add_checker = function(elm) {
        return true;
    };
    var add_item = function(elm, current_googie) {
        googie5.ignoreAll(elm);
    };
    //googie5.appendNewMenuItem("Add", add_item, add_checker);
    var fn_no_more_errors = function(e) {
      //  alert('no more errros');
        passcheck = true;
    }
    googie5.setDependent();
    googie5.setCustomAjaxError(function(req) {
       // alert('error');
    });
    googie5.useCloseButtons();
    googie5.noMoreErrorsCallback(fn_no_more_errors);
    googie5.setSpellContainer("global_spell_container");
    // googie5.decorateTextareas(textbox, "hel", "t");
    //Getstatespan2();
    var passcheck = false;
    var savebutton = null;
    var waiti = 0;
    function CheckSpell(obj) {
        if (typeof (Page_ClientValidate) == 'function') {
            if (Page_ClientValidate() == false) {
                return false;
            }
        }
        savebutton = obj;
        if (googie5.noErrorsFound() || passcheck) {
           // alert("CheckSpell ok");
            return true;
        }
        //alert(document.getElementById("global_spell_container").innerHTML);
        if (document.getElementById("okclickspan"))
            invokeClick(document.getElementById("okclickspan"))
        setTimeout("WaitSavetate()", 1000);
        return false;
    }
    function ToDoNext() {
  
   
        if (savebutton.href) {
            var href = savebutton.href.replace("Javascript:", "");
            href = unescape(href);
            //alert(href);
            eval(href);
        }
        else
        {
         __doPostBack(savebutton.id,"");
         return true;
        }
    }
    function WaitSavetate() {
        if (waiti > 100) {
            waiti = 0;
            return;
        }
        waiti++;
        //document.getElementById("statespan").innerHTML = "waiting:" + waiti + " " + googie5.noErrorsFound();
        if (passcheck || googie5.noErrorsFound()) {
            //alert("pass");
            //invokeClick(savebutton);          
                ToDoNext();
          
           // __doPostBack(savebutton.id, '');
        }
        else {
            if (googie5.getState() == "checking_spell") {
                setTimeout("WaitSavetate()", 500);
            }
            else {
                showdivspellcheckerror();
            }
        }
    }
    function getText1value() {
        alert(document.getElementById(textbox).value);
    }
    function invokeClick(element) {
        if (element.click) element.click();
        else if (element.fireEvent) element.fireEvent('onclick');
        else if (document.createEvent) {
            var evt = document.createEvent("MouseEvents");
            evt.initEvent("click", true, true);
            element.dispatchEvent(evt);
        }
    }
</script>
asp.net源碼:http://code.VeVb.com/down.asp?typeid=2
<script type="text/javascript">
    function closedivspellcheckerror() {
        document.getElementById("divspellcheckerror").style.display = "none";
    }
    function showdivspellcheckerror() {
        var alertFram = document.getElementById("divspellcheckerror");
        alertFram.style.position = "absolute";
        alertFram.style.left = "50%";
        alertFram.style.top = "50%";
        alertFram.style.marginLeft = "-125px";
        alertFram.style.marginTop = -75 + document.documentElement.scrollTop + "px";
        //alertFram.style.width = "450px";
        //alertFram.style.height = "150px";
        //alertFram.style.background = "#ccc";
        alertFram.style.textAlign = "center";
        //alertFram.style.lineHeight = "150px";
        alertFram.style.zIndex = "10001";
        document.getElementById("divspellcheckerror").style.display = "";
    }
</script>
<div class="shouji138errorbox" id="divspellcheckerror" style="display: none; width: 400px">
    <div id="SccNotify" class="yui-module yui-overlay yui-panel" style="visibility: inherit;">
        <div class="shouji138_notice-error">
            Spelling Error</div>
        <div class="shouji138_notice-body">
            Spelling errors detected.<br />
            Do you wish to correct them?
            <br />
            Click Yes to return,click No to continue submit.<br />
        </div>
        <div class="shouji138_notice_foot">
            <a href="javascript:;" onclick="closedivspellcheckerror();">
                <img src="googiespell/btn_yes.gif" style="border: 0px;" alt="yes" /></a> &nbsp;&nbsp;<a
                    href="javascript:ToDoNext();"><img src="googiespell/btn_no.gif" style="border: 0px;"
                        alt="no" /></a>
        </div>
    </div>
</div>
代理類:sendSpellReq.aspx.cs
asp.net教程:http://www.49028c.com/aspnet.asp
這個類的作用就是發送請求到Google的接口:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.IO;
using System.Text;
namespace SpellCheck.googiespell
{
    public partial class sendSpellReq : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Buffer = true;
            Response.Expires = -1;
            Response.Charset = "utf-8";
            Response.ContentType = "text/html";
    //手機主題  http://www.shouji138.com
            string url = "            Stream InputStream = Request.InputStream;
            StreamReader inputreader = new StreamReader(InputStream, Encoding.UTF8);
            string arc
xml = inputreader.ReadToEnd();
            //Log.SaveNote(arcxml);
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
            myRequest.Method = "POST";
            byte[] postBytes = Encoding.UTF8.GetBytes(arcxml);
            myRequest.ContentType = "application/x-www-form-urlencoded";
            myRequest.ContentLength = arcxml.Length;
            // 發送數據
            using (Stream reqStream = myRequest.GetRequestStream())
            {
                reqStream.Write(postBytes, 0, postBytes.Length);
            }
            HttpWebResponse HttpWResp = (HttpWebResponse)myRequest.GetResponse();
            StreamReader reader = new StreamReader(HttpWResp.GetResponseStream(), Encoding.UTF8);
            string result = reader.ReadToEnd();
            reader.Close();
            HttpWResp.Close();
            //  Log.SaveNote(result);
            Response.Write(result);
            Response.End();
        }
    }
}
使用方法
1. 在需要使用拼寫檢查的地方,把Shouji138.com.SpellValid.ascx控件拖進去,然后在頭部加上js代碼和CSS代碼,如下:
<script type="text/javascript" src="/googiespell/AJS.js"></script>
<script type="text/javascript" src="/googiespell/googiespell.js"></script>
<script type="text/javascript" src="/googiespell/googiespell_multiple.js"></script>
<script type="text/javascript" src="/googiespell/cookiesupport.js"></script>
<link href="/googiespell/googiespell.css" rel="stylesheet" type="text/css" media="all" />
2. 在頁面合適的地方加入一個拼寫檢查的容器DIV
<div id="global_spell_container" class="globalcontainer"></div>
3. 在頁面的底部,引入控件
<uc1:Shouji138_com_SpellValid ID="tc1" runat="server"></uc1:Shouji138_com_SpellValid>
4.最后,把需要進行拼寫檢查的控件,進行注冊一下,比如:
<script type="text/javascript">
 var txt1 = "<%=txt1.ClientID%>";
 var txt2 = "<%=txt2.ClientID%>";
 var txt3 = "<%=TextBox3.ClientID%>";
 googie5.decorateTextareas(txt1, txt2,txt3); //可以添加很多個。
</script>
使用特點
1. 功能強大,可以檢查多國語言,如英語,法語,俄語等等;
2. 使用簡單,只需添加簡單的一些代碼就可以實現頁面上所有輸入框的拼寫檢查;
3. 檢查迅速,實時檢查,實時返回結果;
4. 可以提供相似的單詞選擇。
下載和截圖
歡迎各位來我的小站(戀主題:http://www.shouji138.com)下載代碼包,該控件只免費供個人學習研究之用,如果用于商業用途,請跟作者聯系。
演示地址:http://www.shouji138.com/aspnet2/spellcheck/
下載地址:http://www.shouji138.com/aspnet2/files/SpellCheck.rar
效果截圖:
http://www.shouji138.com/aspnet2/spellcheck/1.jpg
http://www.shouji138.com/aspnet2/spellcheck/2.jpg
http://www.shouji138.com/aspnet2/spellcheck/3.jpg
http://www.shouji138.com/aspnet2/spellcheck/4.jpg
聯系方式:
QQ:441003232
Email:kefu@shouji138.com
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产精品自产a区红杏吧| 日韩精品电影网| 欧美激情精品久久久久久免费印度| 国产成人精品久久久| 国产成人精品久久| 中文字幕精品影院| 成人在线观看视频网站| 一区二区欧美激情| 美女啪啪无遮挡免费久久网站| 国产成人亚洲综合| 亚洲国产成人精品久久久国产成人一区| 日韩视频免费在线| 精品国产网站地址| 国产成人精品久久二区二区| 精品人伦一区二区三区蜜桃免费| 久久五月天色综合| 久久久久久久国产| 欧美激情一区二区三区久久久| 国产精品黄色影片导航在线观看| 清纯唯美亚洲激情| 亚洲91精品在线观看| 成人免费视频网址| 亚洲男人的天堂在线| 国产精品久久久久久av福利软件| 欧亚精品中文字幕| 91精品在线观看视频| 91网站免费观看| 不卡av在线网站| 国产91色在线免费| 欧美日韩黄色大片| 国产精品久久久久久久久影视| 国产精品99免视看9| 国产精品久久97| 欧美性精品220| 亚洲欧美激情一区| 8090成年在线看片午夜| 国产精品白嫩初高中害羞小美女| 亚洲成人动漫在线播放| 亚洲精品免费av| 国产成人91久久精品| 国产精品毛片a∨一区二区三区|国| 欧美xxxx14xxxxx性爽| 91免费的视频在线播放| 亚洲男女自偷自拍图片另类| 国产精品爽黄69天堂a| 孩xxxx性bbbb欧美| 亚洲精品日韩丝袜精品| 91亚洲精品久久久久久久久久久久| 久久久91精品| 91国产一区在线| 九九热精品视频| 成人福利网站在线观看| 欧美精品在线看| 中文字幕日韩欧美在线| 成人国内精品久久久久一区| 日韩在线免费视频观看| 亚洲天堂av综合网| 国产精品成人一区| 人人澡人人澡人人看欧美| 欧美一乱一性一交一视频| 亚洲视频专区在线| 精品国产成人在线| 精品免费在线观看| 免费不卡欧美自拍视频| 国产经典一区二区| 欧美自拍视频在线观看| 日韩av男人的天堂| 久久国产精品99国产精| 国产视频久久久久| 欧美日韩中文字幕| 久久精品91久久久久久再现| 九九热精品视频国产| 欧美一级淫片丝袜脚交| 国产免费一区二区三区在线能观看| 亚洲精品自在久久| 国产精品自产拍在线观看中文| 国产精品都在这里| 裸体女人亚洲精品一区| 亚洲黄页网在线观看| 一区二区三区四区在线观看视频| 国产精品91在线观看| 欧美在线视频免费| 亚洲天堂日韩电影| 91久久在线视频| 精品久久久久久久久久久| 久久精品国产电影| 欧美成人精品三级在线观看| 国产精品偷伦免费视频观看的| 欧美在线视频网站| 久久国产精品亚洲| 成人网在线观看| 成人字幕网zmw| 日韩精品视频在线免费观看| 久久久久久久国产| 欧美精品videossex性护士| 91免费人成网站在线观看18| 欧美日韩另类字幕中文| 成人亚洲欧美一区二区三区| 欧美刺激性大交免费视频| 欧美电影在线观看完整版| 欧美成人一二三| 欧美成人免费一级人片100| 亚洲欧美日韩一区二区三区在线| 国产一区视频在线播放| 亚洲欧美日韩天堂一区二区| 日产精品99久久久久久| 伊人久久精品视频| 亚洲va码欧洲m码| 色av中文字幕一区| 日韩电影在线观看永久视频免费网站| 成人免费大片黄在线播放| 亚洲一区二区三区xxx视频| 97香蕉超级碰碰久久免费软件| 夜夜嗨av色综合久久久综合网| 日韩国产精品亚洲а∨天堂免| 社区色欧美激情 | 国产日韩在线播放| 日韩一区二区精品视频| 欧美老少做受xxxx高潮| 97涩涩爰在线观看亚洲| 亚洲欧美日韩国产中文专区| 亚洲欧美日韩中文在线制服| 日韩二区三区在线| 欧美寡妇偷汉性猛交| 欧美日韩福利在线观看| 中文字幕日韩欧美| 日韩午夜在线视频| 日韩在线免费观看视频| 91精品久久久久久久久久另类| 国产精品久久99久久| 久久精品国产清自在天天线| 欧美成人中文字幕| 日韩av免费网站| 亚洲iv一区二区三区| 国产精品高潮在线| 日韩欧美中文字幕在线播放| 91美女高潮出水| 国产91在线播放九色快色| 一区二区成人精品| 97免费中文视频在线观看| 青青精品视频播放| 欧洲成人免费视频| 欧美一区二区色| 色av吧综合网| 日韩精品久久久久久久玫瑰园| 国内免费精品永久在线视频| 美女久久久久久久| 一本色道久久88精品综合| 日韩精品在线观看视频| 欧美大片在线看免费观看| 伊人久久久久久久久久久久久| 成人淫片在线看| 久久久精品中文字幕| 热久久美女精品天天吊色| 中文字幕欧美日韩在线| 91久久国产精品91久久性色| 姬川优奈aav一区二区| 亚洲国产精品嫩草影院久久| 欧美激情精品久久久久久蜜臀| 久久久999精品视频| 欧美性猛交视频| 亚洲自拍小视频| 国产精品视频xxx| 欧美日韩国产中字|