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

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

?? msgcomposecommands.js

?? 現在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 5 頁
字號:
# -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-# ***** 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):#   David Bienvenu <bienvenu@nventure.com>## 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 *****/** * interfaces */const nsIMsgCompDeliverMode = Components.interfaces.nsIMsgCompDeliverMode;const nsIMsgCompSendFormat = Components.interfaces.nsIMsgCompSendFormat;const nsIMsgCompConvertible = Components.interfaces.nsIMsgCompConvertible;const nsIMsgCompType = Components.interfaces.nsIMsgCompType;const nsIMsgCompFormat = Components.interfaces.nsIMsgCompFormat;const nsIAbPreferMailFormat = Components.interfaces.nsIAbPreferMailFormat;const nsIPlaintextEditorMail = Components.interfaces.nsIPlaintextEditor;const nsISupportsString = Components.interfaces.nsISupportsString;const mozISpellCheckingEngine = Components.interfaces.mozISpellCheckingEngine;/** * In order to distinguish clearly globals that are initialized once when js load (static globals) and those that need to be  * initialize every time a compose window open (globals), I (ducarroz) have decided to prefix by s... the static one and * by g... the other one. Please try to continue and repect this rule in the future. Thanks. *//** * static globals, need to be initialized only once */var sMsgComposeService = Components.classes["@mozilla.org/messengercompose;1"].getService(Components.interfaces.nsIMsgComposeService);var sComposeMsgsBundle = document.getElementById("bundle_composeMsgs");var sPrefs = null;var sPrefBranchInternal = null;var sOther_headers = "";var sAccountManagerDataSource = null;var sRDF = null;var sNameProperty = null;var sDictCount = 0;/* Create message window object. This is use by mail-offline.js and therefore should not be renamed. We need to avoid doing    this kind of cross file global stuff in the future and instead pass this object as parameter when needed by function   in the other js file.*/var msgWindow = Components.classes["@mozilla.org/messenger/msgwindow;1"].createInstance();msgWindow = msgWindow.QueryInterface(Components.interfaces.nsIMsgWindow);/** * Global variables, need to be re-initialized every time mostly because we need to release them when the window close */var gHideMenus;var gMsgCompose;var gAccountManager;var gIOService;var gPromptService;var gLDAPPrefsService;var gWindowLocked;var gContentChanged;var gAutoSaving;var gCurrentIdentity;var defaultSaveOperation;var gSendOrSaveOperationInProgress;var gCloseWindowAfterSave;var gIsOffline;var gSessionAdded;var gCurrentAutocompleteDirectory;var gAutocompleteSession;var gSetupLdapAutocomplete;var gLDAPSession;var gSavedSendNowKey;var gSendFormat;var gLogComposePerformance;var gMsgIdentityElement;var gMsgAddressingWidgetTreeElement;var gMsgSubjectElement;var gMsgAttachmentElement;var gMsgHeadersToolbarElement;// i18n globalsvar gCurrentMailSendCharset;var gSendDefaultCharset;var gCharsetTitle;var gCharsetConvertManager;var gLastWindowToHaveFocus;var gReceiptOptionChanged;var gAttachVCardOptionChanged;var gMailSession;var gAutoSaveInterval;var gAutoSaveTimeout;var gExplicitSave;var gEditingDraft;const kComposeAttachDirPrefName = "mail.compose.attach.dir";function InitializeGlobalVariables(){  gAccountManager = Components.classes["@mozilla.org/messenger/account-manager;1"].getService(Components.interfaces.nsIMsgAccountManager);  gIOService = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);  gPromptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);    //This migrates the LDAPServer Preferences from 4.x to mozilla format.  gLDAPPrefsService = Components.classes["@mozilla.org/ldapprefs-service;1"];  if (gLDAPPrefsService) {    try {      gLDAPPrefsService = gLDAPPrefsService          .getService(Components.interfaces.nsILDAPPrefsService);    } catch (ex) {dump ("ERROR: Cannot get the LDAP prefs service\n" + ex + "\n");}  }  gMsgCompose = null;  gWindowLocked = false;  gContentChanged = false;  gCurrentIdentity = null;  defaultSaveOperation = "draft";  gSendOrSaveOperationInProgress = false;  gAutoSaving = false;  gCloseWindowAfterSave = false;  gIsOffline = gIOService.offline;  gSessionAdded = false;  gCurrentAutocompleteDirectory = null;  gAutocompleteSession = null;  gSetupLdapAutocomplete = false;  gLDAPSession = null;  gSavedSendNowKey = null;  gSendFormat = nsIMsgCompSendFormat.AskUser;  gCurrentMailSendCharset = null;  gSendDefaultCharset = null;  gCharsetTitle = null;  gCharsetConvertManager = Components.classes['@mozilla.org/charset-converter-manager;1'].getService(Components.interfaces.nsICharsetConverterManager);  gMailSession = Components.classes["@mozilla.org/messenger/services/session;1"].getService(Components.interfaces.nsIMsgMailSession);  gHideMenus = false;  // We are storing the value of the bool logComposePerformance inorder to avoid logging unnecessarily.  if (sMsgComposeService)    gLogComposePerformance = sMsgComposeService.logComposePerformance;  gLastWindowToHaveFocus = null;  gReceiptOptionChanged = false;  gAttachVCardOptionChanged = false;}InitializeGlobalVariables();function ReleaseGlobalVariables(){  gAccountManager = null;  gIOService = null;  gPromptService = null;  gLDAPPrefsService = null;  gCurrentIdentity = null;  gCurrentAutocompleteDirectory = null;  gAutocompleteSession = null;  gLDAPSession = null;  gCharsetConvertManager = null;  gMsgCompose = null;  gMailSession = null;}function disableEditableFields(){  gMsgCompose.editor.flags |= nsIPlaintextEditorMail.eEditorReadonlyMask;  var disableElements = document.getElementsByAttribute("disableonsend", "true");  for (i=0;i<disableElements.length;i++)  {    disableElements[i].setAttribute('disabled', 'true');  }}function enableEditableFields(){  gMsgCompose.editor.flags &= ~nsIPlaintextEditorMail.eEditorReadonlyMask;  var enableElements = document.getElementsByAttribute("disableonsend", "true");  for (i=0;i<enableElements.length;i++)  {    enableElements[i].removeAttribute('disabled');  }}var gComposeRecyclingListener = {  onClose: function() {    //Reset recipients and attachments    ReleaseAutoCompleteState();    awResetAllRows();    RemoveAllAttachments();    // We need to clear the identity popup menu in case the user will change them.     // It will be rebuilt later in ComposeStartup    ClearIdentityListPopup(document.getElementById("msgIdentityPopup"));     //Clear the subject    GetMsgSubjectElement().value = "";    // be sure to clear the transaction manager for the subject    GetMsgSubjectElement().editor.transactionManager.clear();    SetComposeWindowTitle();    SetContentAndBodyAsUnmodified();    disableEditableFields();    ReleaseGlobalVariables();    // Clear the focus    awGetInputElement(1).removeAttribute('focused');    //Reset Boxes size        document.getElementById("headers-box").removeAttribute("height");    document.getElementById("appcontent").removeAttribute("height");    document.getElementById("addresses-box").removeAttribute("width");    document.getElementById("attachments-box").removeAttribute("width");    //Reset menu options    document.getElementById("format_auto").setAttribute("checked", "true");    document.getElementById("priority_normal").setAttribute("checked", "true");    //Reset toolbars that could be hidden    if (gHideMenus) {      document.getElementById("formatMenu").hidden = false;      document.getElementById("insertMenu").hidden = false;      var showFormat = document.getElementById("menu_showFormatToolbar")      showFormat.hidden = false;      if (showFormat.getAttribute("checked") == "true")        document.getElementById("FormatToolbar").hidden = false;    }    //Reset editor    InlineSpellChecker.Init(GetCurrentEditor(), false); // unregister inline spell checking listeners and release the spell checker    EditorResetFontAndColorAttributes();    EditorCleanup();    //Release the nsIMsgComposeParams object    if (window.arguments && window.arguments[0])      window.arguments[0] = null;    var event = document.createEvent('Events');    event.initEvent('compose-window-close', false, true);    document.getElementById("msgcomposeWindow").dispatchEvent(event);    if (gAutoSaveTimeout)      clearTimeout(gAutoSaveTimeout);  },  onReopen: function(params) {    InitializeGlobalVariables();    ComposeStartup(true, params);    var event = document.createEvent('Events');    event.initEvent('compose-window-reopen', false, true);    document.getElementById("msgcomposeWindow").dispatchEvent(event);  }};var stateListener = {  NotifyComposeFieldsReady: function() {    ComposeFieldsReady();  },  NotifyComposeBodyReady: function() {},  ComposeProcessDone: function(aResult) {    gWindowLocked = false;    enableEditableFields();    updateComposeItems();    if (aResult== Components.results.NS_OK)    {      if (!gAutoSaving)        SetContentAndBodyAsUnmodified();           if (gCloseWindowAfterSave)      {        // Notify the SendListener that Send has been aborted and Stopped        if (gMsgCompose)        {          var externalListener = gMsgCompose.getExternalSendListener();          if (externalListener)          {              externalListener.onSendNotPerformed(null, Components.results.NS_ERROR_ABORT);          }        }        MsgComposeCloseWindow(true);      }    }    // else if we failed to save, and we're autosaving, need to re-mark the editor    // as changed, so that we won't lose the changes.    else if (gAutoSaving)    {      gMsgCompose.bodyModified = true;       gContentChanged = true;    }    gAutoSaving = false;    gCloseWindowAfterSave = false;  },  SaveInFolderDone: function(folderURI) {    DisplaySaveFolderDlg(folderURI);  }};// all progress notifications are done through the nsIWebProgressListener implementation...var progressListener = {    onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus)    {      if (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_START)      {        document.getElementById('compose-progressmeter').setAttribute( "mode", "undetermined" );      }            if (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP)      {        gSendOrSaveOperationInProgress = false;        document.getElementById('compose-progressmeter').setAttribute( "mode", "normal" );        document.getElementById('compose-progressmeter').setAttribute( "value", 0 );        document.getElementById('statusText').setAttribute('label', '');      }    },        onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)    {      // Calculate percentage.      var percent;      if ( aMaxTotalProgress > 0 )       {        percent = Math.round( (aCurTotalProgress*100)/aMaxTotalProgress );        if ( percent > 100 )          percent = 100;                document.getElementById('compose-progressmeter').removeAttribute("mode");                // Advance progress meter.        document.getElementById('compose-progressmeter').setAttribute( "value", percent );      }       else       {        // Progress meter should be barber-pole in this case.        document.getElementById('compose-progressmeter').setAttribute( "mode", "undetermined" );      }    },    onLocationChange: function(aWebProgress, aRequest, aLocation)    {      // we can ignore this notification    },

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线免费视频| 91欧美激情一区二区三区成人| 亚洲成人精品一区二区| 亚洲黄色小说网站| 一卡二卡欧美日韩| 午夜精品久久久久久久 | 五月天中文字幕一区二区| 一区二区视频在线看| 一区二区三区中文免费| 亚洲一区二区三区免费视频| 亚洲电影一级黄| 五月激情综合婷婷| 精品一区二区三区免费| 国产精品一二二区| 97se亚洲国产综合自在线| 91免费国产在线观看| 在线观看亚洲a| 欧美久久久久久蜜桃| 精品理论电影在线| 国产欧美日韩一区二区三区在线观看| 国产精品久久免费看| 亚洲免费观看在线视频| 天天做天天摸天天爽国产一区| 青青青伊人色综合久久| 国产成人综合亚洲网站| 99国产精品99久久久久久| 欧美在线观看一区| 日韩精品一区二区在线观看| 国产喷白浆一区二区三区| 中文字幕一区免费在线观看| 亚洲专区一二三| 蜜芽一区二区三区| 丁香激情综合国产| 欧美日韩亚洲综合在线 | 久久成人免费网站| 成人av手机在线观看| 欧美亚洲图片小说| 日韩欧美国产不卡| 国产精品麻豆视频| 丝袜诱惑制服诱惑色一区在线观看 | 日韩欧美在线观看一区二区三区| 久久蜜桃av一区精品变态类天堂| 中文字幕亚洲一区二区va在线| 亚洲成av人在线观看| 国产一区二区调教| 在线观看国产91| 久久一夜天堂av一区二区三区| 亚洲免费观看视频| 国产一区二区久久| 在线日韩一区二区| 久久久久久久久久久99999| 亚洲精品日日夜夜| 国产精品亚洲专一区二区三区| 在线观看日韩av先锋影音电影院| 精品久久久久久久一区二区蜜臀| 亚洲男女毛片无遮挡| 狠狠久久亚洲欧美| 欧美日韩亚洲综合一区二区三区| 日本一区二区视频在线| 三级不卡在线观看| 一本大道久久a久久精二百| 久久综合色鬼综合色| 亚洲五码中文字幕| 99综合影院在线| 精品久久久久久久久久久久包黑料 | 在线精品视频一区二区三四| 26uuu亚洲综合色| 亚洲午夜成aⅴ人片| av一区二区三区四区| 欧美精品一区男女天堂| 亚洲国产精品久久艾草纯爱| 懂色av一区二区三区蜜臀| 日韩一级黄色大片| 午夜精品一区二区三区免费视频 | 欧美精品一区视频| 日韩不卡一区二区三区| 日本久久一区二区三区| 国产精品大尺度| 国产露脸91国语对白| 日韩免费看网站| 日本伊人色综合网| 欧美日韩国产中文| 亚洲国产综合人成综合网站| 色悠悠久久综合| 日韩毛片视频在线看| 国产91综合一区在线观看| 日韩亚洲欧美成人一区| 五月天欧美精品| 欧美三片在线视频观看| 亚洲图片欧美色图| 欧洲av在线精品| 亚洲免费观看高清完整版在线观看 | 欧美日韩免费在线视频| 亚洲欧美一区二区久久| 99精品视频一区| 国产精品久久久久久久久动漫| 国产xxx精品视频大全| 久久综合九色欧美综合狠狠| 蜜桃av噜噜一区| 日韩午夜激情av| 免费一级片91| 91精品久久久久久久99蜜桃 | 成人午夜视频在线观看| 久久久久成人黄色影片| 国产成人精品免费视频网站| 国产欧美精品一区aⅴ影院| 国产99精品在线观看| 中文字幕亚洲一区二区va在线| 91在线播放网址| 亚洲一区二区中文在线| 欧美日韩精品一区二区在线播放 | 色吊一区二区三区| 亚洲精品伦理在线| 在线观看av不卡| 午夜日韩在线电影| 欧美一区二区三区系列电影| 男人操女人的视频在线观看欧美 | 婷婷开心久久网| 91精品国产色综合久久| 久久99精品一区二区三区 | 亚洲成a人v欧美综合天堂下载 | 精品国产一区二区亚洲人成毛片| 国产综合久久久久久鬼色| 久久先锋影音av| av在线播放成人| 亚洲成av人**亚洲成av**| 91精品国产一区二区三区蜜臀| 精品一区精品二区高清| 国产精品丝袜一区| 欧美三级一区二区| 六月丁香综合在线视频| 中文字幕免费观看一区| 欧洲一区二区三区在线| 免费成人在线视频观看| 国产日韩亚洲欧美综合| 欧美综合在线视频| 久久丁香综合五月国产三级网站| 国产精品国产三级国产| 欧美卡1卡2卡| 成人高清免费观看| 亚洲va中文字幕| 国产亚洲精品超碰| 欧美丝袜丝交足nylons图片| 久久电影网电视剧免费观看| 一区在线播放视频| 日韩欧美亚洲一区二区| 99视频精品全部免费在线| 日本成人在线一区| 亚洲视频在线一区| 日韩欧美一级片| 91在线观看污| 久久精品久久精品| 亚洲精品国产视频| 久久久久久久久99精品| 欧美午夜在线一二页| 国产精品一级二级三级| 亚洲国产精品一区二区www在线| 久久久精品免费免费| 欧美日韩视频第一区| av中文字幕亚洲| 黄一区二区三区| 亚洲成人自拍偷拍| 中文字幕永久在线不卡| 欧美mv和日韩mv国产网站| 欧美图片一区二区三区| 成人免费av在线| 久久激情综合网| 亚洲国产一二三| 一区在线观看免费| 久久九九久久九九| 91精品国产综合久久久久| 91论坛在线播放| 懂色av一区二区三区免费观看 | 日韩精品一区二区三区在线 | 欧美日韩一区不卡| 99免费精品视频| 国产91丝袜在线观看| 激情综合色丁香一区二区| 午夜精品爽啪视频| 亚洲最新视频在线观看| 国产精品另类一区| 久久久久国产一区二区三区四区| 欧美一区二区不卡视频| 精品视频资源站| 在线视频欧美区| 91美女蜜桃在线| 99久久国产综合精品麻豆| 成人午夜又粗又硬又大| 国产成人夜色高潮福利影视| 极品少妇一区二区三区精品视频 | 久久国内精品视频| 男人操女人的视频在线观看欧美| 亚洲图片自拍偷拍| 一区二区不卡在线播放| 亚洲精选一二三| 亚洲图片激情小说| 亚洲色图色小说| 日韩美女啊v在线免费观看| 中文字幕日韩一区| 亚洲三级在线免费观看|