亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? edspellcheck.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 2 頁
字號:
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Communicator client code, released * March 31, 1998. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998-1999 * the Initial Developer. All Rights Reserved. * * Contributor(s): *   Charles Manske (cmanske@netscape.com) *   Neil Rashbrook (neil@parkwaycc.co.uk) * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */var gMisspelledWord;var gSpellChecker = null;var gAllowSelectWord = true;var gPreviousReplaceWord = "";var gFirstTime = true;var gLastSelectedLang = null;var gDictCount = 0;function Startup(){  var sendMailMessageMode = false;  var editor = GetCurrentEditor();  if (!editor)  {    window.close();    return;  }  // Get the spellChecker shell  gSpellChecker = Components.classes['@mozilla.org/editor/editorspellchecker;1'].createInstance(Components.interfaces.nsIEditorSpellCheck);  if (!gSpellChecker)  {    dump("SpellChecker not found!!!\n");    window.close();    return;  }  // Start the spell checker module.  try {    // TxtSrv Filter Contract Id    var filterContractId;    sendMailMessageMode = window.arguments[0];    var skipBlockQuotes = window.arguments[1];    var enableSelectionChecking = window.arguments[2];    if (skipBlockQuotes)      filterContractId = "@mozilla.org/editor/txtsrvfiltermail;1";    else      filterContractId = "@mozilla.org/editor/txtsrvfilter;1";    gSpellChecker.setFilter(Components.classes[filterContractId].createInstance(Components.interfaces.nsITextServicesFilter));    gSpellChecker.InitSpellChecker(editor, enableSelectionChecking);  }  catch(ex) {   dump("*** Exception error: InitSpellChecker\n");    window.close();    return;  }  gDialog.MisspelledWordLabel = document.getElementById("MisspelledWordLabel");  gDialog.MisspelledWord      = document.getElementById("MisspelledWord");  gDialog.ReplaceButton       = document.getElementById("Replace");  gDialog.IgnoreButton        = document.getElementById("Ignore");  gDialog.StopButton          = document.getElementById("Stop");  gDialog.CloseButton         = document.getElementById("Close");  gDialog.ReplaceWordInput    = document.getElementById("ReplaceWordInput");  gDialog.SuggestedList       = document.getElementById("SuggestedList");  gDialog.LanguageMenulist    = document.getElementById("LanguageMenulist");  // Fill in the language menulist and sync it up  // with the spellchecker's current language.  var curLang;  try {    curLang = gSpellChecker.GetCurrentDictionary();  } catch(ex) {    curLang = "";  }  InitLanguageMenu(curLang);    // Get the first misspelled word and setup all UI  NextWord();  // When startup param is true, setup different UI when spell checking   //   just before sending mail message    if (sendMailMessageMode)  {    // If no misspelled words found, simply close dialog and send message    if (!gMisspelledWord)    {      onClose();      return;    }    // Hide "Close" button and use "Send" instead    gDialog.CloseButton.hidden = true;    gDialog.CloseButton = document.getElementById("Send");    gDialog.CloseButton.hidden = false;  }  else  {    // Normal spell checking - hide the "Stop" button    // (Note that this button is the "Cancel" button for    //  Esc keybinding and related window close actions)    gDialog.StopButton.hidden = true;  }  // Clear flag that determines message when  //  no misspelled word is found  //  (different message when used for the first time)  gFirstTime = false;}function InitLanguageMenu(aCurLang){  var o1 = {};  var o2 = {};  // Get the list of dictionaries from  // the spellchecker.  try  {    gSpellChecker.GetDictionaryList(o1, o2);  }  catch(ex)  {    dump("Failed to get DictionaryList!\n");    return;  }  var dictList = o1.value;  var count    = o2.value;  // If dictionary count hasn't changed then no need to update the menu.  if (gDictCount == count)    return;  // Store current dictionary count.  gDictCount = count;  // Load the string bundles that will help us map  // RFC 1766 strings to UI strings.  // Load the language string bundle.  var languageBundle = document.getElementById("languageBundle");  var regionBundle = null;  // If we have a language string bundle, load the region string bundle.  if (languageBundle)    regionBundle = document.getElementById("regionBundle");    var menuStr2;  var isoStrArray;  var langId;  var langLabel;  var i;  for (i = 0; i < count; i++)  {    try    {      langId = dictList[i];      isoStrArray = dictList[i].split("-");      if (languageBundle && isoStrArray[0])        langLabel = languageBundle.getString(isoStrArray[0].toLowerCase());      if (regionBundle && langLabel && isoStrArray.length > 1 && isoStrArray[1])      {        menuStr2 = regionBundle.getString(isoStrArray[1].toLowerCase());        if (menuStr2)          langLabel += "/" + menuStr2;      }      if (langLabel && isoStrArray.length > 2 && isoStrArray[2])        langLabel += " (" + isoStrArray[2] + ")";      if (!langLabel)        langLabel = langId;    }    catch (ex)    {      // getString throws an exception when a key is not found in the      // bundle. In that case, just use the original dictList string.      langLabel = langId;    }    dictList[i] = [langLabel, langId];  }    // sort by locale-aware collation  dictList.sort(    function compareFn(a, b)    {      return a[0].localeCompare(b[0]);    }  );  // Remove any languages from the list.  var languageMenuPopup = gDialog.LanguageMenulist.firstChild;  while (languageMenuPopup.firstChild.localName != "menuseparator")    languageMenuPopup.removeChild(languageMenuPopup.firstChild);  var defaultItem = null;  for (i = 0; i < count; i++)  {    var item = gDialog.LanguageMenulist.insertItemAt(i, dictList[i][0], dictList[i][1]);    if (aCurLang && dictList[i][1] == aCurLang)      defaultItem = item;  }  // Now make sure the correct item in the menu list is selected.  if (defaultItem)  {    gDialog.LanguageMenulist.selectedItem = defaultItem;    gLastSelectedLang = defaultItem;  }}function DoEnabling(){  if (!gMisspelledWord)  {    // No more misspelled words    gDialog.MisspelledWord.setAttribute("value",GetString( gFirstTime ? "NoMisspelledWord" : "CheckSpellingDone"));    gDialog.ReplaceButton.removeAttribute("default");    gDialog.IgnoreButton.removeAttribute("default");    gDialog.CloseButton.setAttribute("default","true");    // Shouldn't have to do this if "default" is true?    gDialog.CloseButton.focus();    SetElementEnabledById("MisspelledWordLabel", false);    SetElementEnabledById("ReplaceWordLabel", false);    SetElementEnabledById("ReplaceWordInput", false);    SetElementEnabledById("CheckWord", false);    SetElementEnabledById("SuggestedListLabel", false);    SetElementEnabledById("SuggestedList", false);    SetElementEnabledById("Ignore", false);    SetElementEnabledById("IgnoreAll", false);    SetElementEnabledById("Replace", false);    SetElementEnabledById("ReplaceAll", false);    SetElementEnabledById("AddToDictionary", false);  } else {    SetElementEnabledById("MisspelledWordLabel", true);    SetElementEnabledById("ReplaceWordLabel", true);    SetElementEnabledById("ReplaceWordInput", true);    SetElementEnabledById("CheckWord", true);    SetElementEnabledById("SuggestedListLabel", true);    SetElementEnabledById("SuggestedList", true);    SetElementEnabledById("Ignore", true);    SetElementEnabledById("IgnoreAll", true);    SetElementEnabledById("AddToDictionary", true);    gDialog.CloseButton.removeAttribute("default");    SetReplaceEnable();  }}function NextWord(){  gMisspelledWord = gSpellChecker.GetNextMisspelledWord();  SetWidgetsForMisspelledWord();}function SetWidgetsForMisspelledWord(){  gDialog.MisspelledWord.setAttribute("value", TruncateStringAtWordEnd(gMisspelledWord, 30, true));  // Initial replace word is misspelled word  gDialog.ReplaceWordInput.value = gMisspelledWord;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区在线观看| 国产日韩av一区| 曰韩精品一区二区| 最近中文字幕一区二区三区| 国产精品无遮挡| 国产精品日韩精品欧美在线| 亚洲国产精品99久久久久久久久| 久久久综合网站| 91精品国产欧美一区二区成人| 在线成人高清不卡| 欧美在线啊v一区| 欧美久久久久久久久久| 成人黄色在线看| 91首页免费视频| 欧美亚洲日本国产| 欧美日韩另类一区| 日韩女优电影在线观看| 久久综合久久99| 精品国产在天天线2019| 久久精品人人做人人爽人人| 日韩伦理免费电影| 天堂久久一区二区三区| 国内精品嫩模私拍在线| 成人免费视频一区二区| 91小视频免费观看| 欧美日韩中字一区| 久久综合国产精品| 国产精品国产a| 日韩久久一区二区| 美女诱惑一区二区| 不卡一区在线观看| 91精品国产91久久综合桃花| 欧美激情一区二区三区在线| 亚洲电影视频在线| 国产精品亚洲午夜一区二区三区 | 一级中文字幕一区二区| 午夜电影网亚洲视频| 国产一区二区美女诱惑| 色综合久久六月婷婷中文字幕| 欧美一区二区观看视频| 综合婷婷亚洲小说| 国产在线精品一区二区| 在线精品视频小说1| 久久综合av免费| 亚洲成年人影院| av在线不卡免费看| 26uuu亚洲综合色| 五月天一区二区| 91在线免费视频观看| 精品福利一区二区三区免费视频| 国产精品久久久久国产精品日日| 日本亚洲欧美天堂免费| 不卡电影免费在线播放一区| 欧美xxxxx牲另类人与| 午夜久久久影院| 91久久香蕉国产日韩欧美9色| 国产亚洲成av人在线观看导航| 日日嗨av一区二区三区四区| 色综合久久天天综合网| 中文字幕一区免费在线观看| 韩国在线一区二区| 91精品国产一区二区三区香蕉| 亚洲最快最全在线视频| 丁香啪啪综合成人亚洲小说| 欧美精品一区二区三区四区 | 欧美精品一区二区在线播放 | 国产精品美女久久久久久久久 | 国产区在线观看成人精品| 日韩高清不卡一区二区三区| 欧美日韩一区三区| 亚洲影视资源网| 欧美影院一区二区| 亚洲人吸女人奶水| 成人h动漫精品一区二区 | 色婷婷亚洲精品| 中文字幕亚洲综合久久菠萝蜜| 国产福利视频一区二区三区| 欧美精品一区二区三| 麻豆91在线播放免费| 欧美日韩精品福利| 美腿丝袜亚洲综合| 日韩免费性生活视频播放| 免费在线一区观看| 精品国产精品一区二区夜夜嗨| 国产真实乱偷精品视频免| 91精品国产入口在线| 久久99精品一区二区三区| 久久久久九九视频| 99久久精品免费| 午夜精品福利一区二区三区av| 欧美高清激情brazzers| 久久精品av麻豆的观看方式| 久久一夜天堂av一区二区三区| 国产 欧美在线| 中文字幕在线不卡视频| 欧美在线免费播放| 另类小说色综合网站| 精品久久久久久久久久久院品网 | 欧美私模裸体表演在线观看| 亚洲中国最大av网站| 日韩欧美色电影| 国产suv精品一区二区883| 亚洲视频资源在线| 91精品国产品国语在线不卡| 国产91在线|亚洲| 亚洲一区二区在线免费观看视频| 欧美一区二区精美| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 91国内精品野花午夜精品| 天天色天天操综合| 国产精品卡一卡二| 制服丝袜中文字幕亚洲| av电影在线观看不卡| 麻豆精品在线观看| 亚洲精品菠萝久久久久久久| 精品久久久久久亚洲综合网| 在线视频中文字幕一区二区| 国内精品免费**视频| 久久国产尿小便嘘嘘| 中文字幕欧美区| 日韩天堂在线观看| 一本色道久久综合狠狠躁的推荐| 美国十次综合导航| 亚洲一二三四区不卡| 久久嫩草精品久久久久| 色屁屁一区二区| 丁香五精品蜜臀久久久久99网站| 日韩国产一区二| 亚洲一区自拍偷拍| 中文字幕欧美激情| 久久综合五月天婷婷伊人| 欧美喷潮久久久xxxxx| 91视视频在线直接观看在线看网页在线看| 免费在线视频一区| 亚洲国产成人va在线观看天堂| 国产精品高潮久久久久无| 久久免费美女视频| 日韩女优av电影在线观看| 欧美日本国产视频| 欧美色图天堂网| 色吊一区二区三区| 亚洲一区二区在线免费看| 奇米精品一区二区三区在线观看 | 色999日韩国产欧美一区二区| 黑人精品欧美一区二区蜜桃| 国产欧美一区二区精品忘忧草| 51精品视频一区二区三区| 99久久免费精品高清特色大片| 成人午夜电影久久影院| 国产精品主播直播| 国产宾馆实践打屁股91| 国产综合色精品一区二区三区| 精品无码三级在线观看视频| 九九精品视频在线看| 日韩福利视频导航| 久久机这里只有精品| 精品伊人久久久久7777人| 久久精品国产精品亚洲精品| 极品少妇xxxx精品少妇| 国产麻豆视频精品| 国产成人av电影在线| 国产高清一区日本| 99麻豆久久久国产精品免费优播| 99精品欧美一区二区蜜桃免费 | 国产精品国产三级国产aⅴ原创 | 91精品国产综合久久蜜臀| 色狠狠一区二区三区香蕉| 色一情一伦一子一伦一区| 欧美自拍偷拍午夜视频| 欧美日韩国产片| 日韩一级片在线播放| 日韩一区二区三区视频在线| 91精品综合久久久久久| 国产午夜精品一区二区三区四区| 国产精品免费看片| 丝袜诱惑亚洲看片| 国产九色sp调教91| 91美女片黄在线观看91美女| 欧美三区在线视频| 欧美大黄免费观看| 中文字幕一区二区三区在线不卡| 一区二区欧美视频| 亚洲午夜日本在线观看| 国产久卡久卡久卡久卡视频精品| 成人免费黄色大片| 欧美日韩一区精品| 国产性天天综合网| 亚洲欧美激情小说另类| 秋霞电影网一区二区| 99天天综合性| 欧美美女视频在线观看| 久久免费视频一区| 亚洲综合成人在线视频| 国产精品一二三四| 91福利在线看| 久久久久久久久久久电影| 亚洲午夜免费电影| 成人性视频网站| 欧美成人激情免费网| 亚洲免费av网站|