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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? msgcomposecommands.js

?? 現(xiàn)在很火的郵件客戶端軟件thunderbird的源碼
?? JS
?? 第 1 頁 / 共 5 頁
字號:
/* This function will go away soon as now arguments are passed to the window using a object of type nsMsgComposeParams instead of a string */function GetArgs(originalData){  var args = new Object();  if (originalData == "")    return null;  var data = "";  var separator = String.fromCharCode(1);  var quoteChar = "";  var prevChar = "";  var nextChar = "";  for (var i = 0; i < originalData.length; i ++, prevChar = aChar)  {    var aChar = originalData.charAt(i)    var aCharCode = originalData.charCodeAt(i)    if ( i < originalData.length - 1)      nextChar = originalData.charAt(i + 1);    else      nextChar = "";    if (aChar == quoteChar && (nextChar == "," || nextChar == ""))    {      quoteChar = "";      data += aChar;    }    else if ((aCharCode == 39 || aCharCode == 34) && prevChar == "=") //quote or double quote    {      if (quoteChar == "")        quoteChar = aChar;      data += aChar;    }    else if (aChar == ",")    {      if (quoteChar == "")        data += separator;      else        data += aChar    }    else      data += aChar  }  var pairs = data.split(separator);//  dump("Compose: argument: {" + data + "}\n");  for (i = pairs.length - 1; i >= 0; i--)  {    var pos = pairs[i].indexOf('=');    if (pos == -1)      continue;    var argname = pairs[i].substring(0, pos);    var argvalue = pairs[i].substring(pos + 1);    if (argvalue.charAt(0) == "'" && argvalue.charAt(argvalue.length - 1) == "'")      args[argname] = argvalue.substring(1, argvalue.length - 1);    else      try {        args[argname] = decodeURIComponent(argvalue);      } catch (e) {args[argname] = argvalue;}    dump("[" + argname + "=" + args[argname] + "]\n");  }  return args;}function ComposeFieldsReady(msgType){  //If we are in plain text, we need to set the wrap column  if (! gMsgCompose.composeHTML) {    try {      gMsgCompose.editor.QueryInterface(nsIPlaintextEditorMail).wrapWidth          = gMsgCompose.wrapLength;    }    catch (e) {      dump("### textEditor.wrapWidth exception text: " + e + " - failed\n");    }  }  CompFields2Recipients(gMsgCompose.compFields, gMsgCompose.type);  SetComposeWindowTitle();  // need timeout for reply to work  if (gMsgCompose.composeHTML)    setTimeout("loadHTMLMsgPrefs();", 0);  enableEditableFields();  AdjustFocus();}// checks if the passed in string is a mailto url, if it is, generates nsIMsgComposeParams// for the url and returns them.function handleMailtoArgs(mailtoUrl){  // see if the string is a mailto url....do this by checking the first 7 characters of the string  if (/^mailto:/i.test(mailtoUrl))  {    // if it is a mailto url, turn the mailto url into a MsgComposeParams object....    var uri = gIOService.newURI(mailtoUrl, null, null);    if (uri)      return sMsgComposeService.getParamsForMailto(uri);  }  return null;}function ComposeStartup(recycled, aParams){  var params = null; // New way to pass parameters to the compose window as a nsIMsgComposeParameters object  var args = null;   // old way, parameters are passed as a string    if (aParams)    params = aParams;  else    if (window.arguments && window.arguments[0]) {      try {        if (window.arguments[0] instanceof Components.interfaces.nsIMsgComposeParams)          params = window.arguments[0];        else          params = handleMailtoArgs(window.arguments[0]);      }      catch(ex) { dump("ERROR with parameters: " + ex + "\n"); }      // if still no dice, try and see if the params is an old fashioned list of string attributes      // XXX can we get rid of this yet?      if (!params)      {        args = GetArgs(window.arguments[0]);      }    }  var identityList = document.getElementById("msgIdentity");  var identityListPopup = document.getElementById("msgIdentityPopup");  document.addEventListener("keypress", awDocumentKeyPress, true);  if (identityListPopup)    FillIdentityListPopup(identityListPopup);  if (!params) {    // This code will go away soon as now arguments are passed to the window using a object of type nsMsgComposeParams instead of a string    params = Components.classes["@mozilla.org/messengercompose/composeparams;1"].createInstance(Components.interfaces.nsIMsgComposeParams);    params.composeFields = Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields);    if (args) { //Convert old fashion arguments into params      var composeFields = params.composeFields;      if (args.bodyislink == "true")        params.bodyIsLink = true;      if (args.type)        params.type = args.type;      if (args.format)        params.format = args.format;      if (args.originalMsg)        params.originalMsgURI = args.originalMsg;      if (args.preselectid)        params.identity = getIdentityForKey(args.preselectid);      if (args.to)        composeFields.to = args.to;      if (args.cc)        composeFields.cc = args.cc;      if (args.bcc)        composeFields.bcc = args.bcc;      if (args.newsgroups)        composeFields.newsgroups = args.newsgroups;      if (args.subject)        composeFields.subject = args.subject;      if (args.attachment)      {        var attachmentList = args.attachment.split(",");        var attachment;        for (var i = 0; i < attachmentList.length; i ++)        {          attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment);          attachment.url = attachmentList[i];          composeFields.addAttachment(attachment);        }      }      if (args.newshost)        composeFields.newshost = args.newshost;      if (args.body)         composeFields.body = args.body;    }  }  // " <>" is an empty identity, and most likely not valid  if (!params.identity || params.identity.identityName == " <>") {    // no pre selected identity, so use the default account    var identities = gAccountManager.defaultAccount.identities;    if (identities.Count() == 0)      identities = gAccountManager.allIdentities;    params.identity = identities.QueryElementAt(0, Components.interfaces.nsIMsgIdentity);  }  identityList.value = params.identity.key;  LoadIdentity(true);  if (sMsgComposeService)  {    gMsgCompose = sMsgComposeService.InitCompose(window, params);    if (gMsgCompose)    {      // set the close listener      gMsgCompose.recyclingListener = gComposeRecyclingListener;            //Lets the compose object knows that we are dealing with a recycled window      gMsgCompose.recycledWindow = recycled;      // Get the <editor> element to startup an editor      var editorElement = GetCurrentEditorElement();      if (!editorElement)      {        dump("Failed to get editor element!\n");        return;      }      document.getElementById("returnReceiptMenu").setAttribute('checked',                                          gMsgCompose.compFields.returnReceipt);      document.getElementById("cmd_attachVCard").setAttribute('checked',                                          gMsgCompose.compFields.attachVCard);      document.getElementById("menu_inlineSpellCheck").setAttribute('checked', sPrefs.getBoolPref("mail.spellcheck.inline"));      // If recycle, editor is already created      if (!recycled)       {        try {          var editortype = gMsgCompose.composeHTML ? "htmlmail" : "textmail";          editorElement.makeEditable(editortype, true);        } catch (e) { dump(" FAILED TO START EDITOR: "+e+"\n"); }        // setEditorType MUST be call before setContentWindow        if (gMsgCompose.composeHTML)        {          initLocalFontFaceMenu(document.getElementById("FontFacePopup"));        }        else        {          //Remove HTML toolbar, format and insert menus as we are editing in plain text mode          document.getElementById("outputFormatMenu").setAttribute("hidden", true);          document.getElementById("FormatToolbar").setAttribute("hidden", true);          document.getElementById("formatMenu").setAttribute("hidden", true);          document.getElementById("insertMenu").setAttribute("hidden", true);          document.getElementById("menu_showFormatToolbar").setAttribute("hidden", true);        }        // Do setup common to Message Composer and Web Composer        EditorSharedStartup();         }      var msgCompFields = gMsgCompose.compFields;      if (msgCompFields)      {        if (params.bodyIsLink)        {          var body = msgCompFields.body;          if (gMsgCompose.composeHTML)          {            var cleanBody;            try {              cleanBody = decodeURI(body);            } catch(e) { cleanBody = body;}            // XXX : need to do html-escaping here !            msgCompFields.body = "<BR><A HREF=\"" + body + "\">" + cleanBody + "</A><BR>";          }          else            msgCompFields.body = "\n<" + body + ">\n";        }        var subjectValue = msgCompFields.subject;        GetMsgSubjectElement().value = subjectValue;        var attachments = msgCompFields.attachmentsArray;        if (attachments)          for (i = 0; i < attachments.Count(); i ++)            AddAttachment(attachments.QueryElementAt(i, Components.interfaces.nsIMsgAttachment));                    if (attachments.Count())           {            ChangeAttachmentBucketVisibility(false);          }      }      var event = document.createEvent('Events');      event.initEvent('compose-window-init', false, true);      document.getElementById("msgcomposeWindow").dispatchEvent(event);      gMsgCompose.RegisterStateListener(stateListener);      if (recycled)      {        InitEditor();        if (gMsgCompose.composeHTML)        {          // Force color picker on toolbar to show document colors          onFontColorChange();          onBackgroundColorChange();        }        // reset the priorty field for recycled windows        updatePriorityToolbarButton('Normal');      }       else       {        // Add an observer to be called when document is done loading,        //   which creates the editor        try {          GetCurrentCommandManager().                addCommandObserver(gMsgEditorCreationObserver, "obs_documentCreated");          // Load empty page to create the editor          editorElement.webNavigation.loadURI("about:blank", // uri string                               0,                            // load flags                               null,                         // referrer                               null,                         // post-data stream                               null);        } catch (e) {          dump(" Failed to startup editor: "+e+"\n");        }      }    }  }  gEditingDraft = gMsgCompose.compFields.draftId;  // finally, see if we need to auto open the address sidebar.   var sideBarBox = document.getElementById('sidebar-box');  if (sideBarBox.getAttribute("sidebarVisible") == "true")  {    // if we aren't supposed to have the side bar hidden, make sure it is visible    if (document.getElementById("sidebar").getAttribute("src") == "")      setTimeout(toggleAddressPicker, 0);   // do this on a delay so we don't hurt perf. on bringing up a new compose window  }  gAutoSaveInterval = sPrefs.getBoolPref("mail.compose.autosave")     ? sPrefs.getIntPref("mail.compose.autosaveinterval") * 60000    : 0;  if (gAutoSaveInterval)    gAutoSaveTimeout = setTimeout(AutoSave, gAutoSaveInterval);  gExplicitSave = false;}// The new, nice, simple way of getting notified when a new editor has been createdvar gMsgEditorCreationObserver ={   observe: function(aSubject, aTopic, aData)  {    if (aTopic == "obs_documentCreated")    {      var editor = GetCurrentEditor();      if (editor && GetCurrentCommandManager() == aSubject)      {        var editorStyle = editor.QueryInterface(Components.interfaces.nsIEditorStyleSheets);        editorStyle.addStyleSheet("chrome://messenger/skin/messageQuotes.css");        InitEditor();      }      // Now that we know this document is an editor, update commands now if      // the document has focus, or next time it receives focus via      // CommandUpdate_MsgCompose()      if (gLastWindowToHaveFocus == document.commandDispatcher.focusedWindow)        updateComposeItems();      else        gLastWindowToHaveFocus = null;    }  }}function WizCallback(state){  if (state){    ComposeStartup(false, null);  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人自拍在线| 国产精品传媒入口麻豆| 26uuu精品一区二区在线观看| 美女被吸乳得到大胸91| 亚洲视频香蕉人妖| 欧美色网一区二区| 成人免费不卡视频| 国产精品久久毛片| 国产欧美精品在线观看| 精品少妇一区二区三区在线视频 | 欧美日本一道本在线视频| 成人免费视频视频在线观看免费 | 久久综合久久综合九色| 欧美精品免费视频| 色综合网色综合| 国产91清纯白嫩初高中在线观看 | 丝袜美腿亚洲色图| 一区二区三区国产精华| 国产精品久久久久久久久快鸭| 欧美一区二区免费视频| 美女久久久精品| 精品福利二区三区| 69久久夜色精品国产69蝌蚪网| 亚洲精品精品亚洲| 亚洲色图制服丝袜| 欧美国产日本视频| 久久综合资源网| 91麻豆精品国产无毒不卡在线观看| 欧美网站大全在线观看| 色噜噜久久综合| 成人国产精品视频| 国产99精品视频| 成人综合激情网| 九九九久久久精品| 国产精品一区专区| 日本欧美在线观看| 国产日韩影视精品| 精品国产91乱码一区二区三区| 欧美精品一区二区三区久久久| 26uuu成人网一区二区三区| 26uuu成人网一区二区三区| 欧美mv日韩mv国产网站app| 欧美女孩性生活视频| 欧美日韩一区精品| 制服丝袜中文字幕亚洲| 欧美成人r级一区二区三区| 久久久久97国产精华液好用吗| 暴力调教一区二区三区| 不卡一区在线观看| 在线一区二区视频| 日韩一区二区三区电影| 久久亚洲综合色| 久久精品夜夜夜夜久久| 日本女人一区二区三区| 欧洲亚洲国产日韩| 一区在线观看视频| 国产91在线|亚洲| 精品国产1区二区| 日本亚洲一区二区| 精品视频免费看| 亚洲最大色网站| 欧美亚日韩国产aⅴ精品中极品| 中文字幕+乱码+中文字幕一区| 美女免费视频一区| 日韩欧美一级特黄在线播放| 日本不卡视频在线观看| 这里是久久伊人| 五月婷婷另类国产| 欧美理论电影在线| 丝袜美腿成人在线| 91精品在线麻豆| 免费在线视频一区| 精品成人在线观看| 国产一区二区在线影院| 精品乱人伦一区二区三区| 日韩1区2区日韩1区2区| 日韩视频一区在线观看| 蜜臀国产一区二区三区在线播放| 欧美一区二区播放| 激情久久五月天| 精品国产污污免费网站入口| 国产乱人伦精品一区二区在线观看| 久久亚洲一级片| 国产成人免费在线视频| 国产精品理论在线观看| 在线精品视频一区二区三四| 亚洲国产一区二区视频| 91精品国产一区二区| 精品一区二区影视| 国产人久久人人人人爽| 91麻豆国产在线观看| 亚洲一卡二卡三卡四卡无卡久久| 欧美亚洲综合色| 美女视频网站黄色亚洲| 中文字幕欧美激情| 91免费视频网| 日韩精品亚洲一区二区三区免费| 欧美成人精品二区三区99精品| 国产精品18久久久久久久久久久久 | 色狠狠色狠狠综合| 日本亚洲电影天堂| 国产欧美日韩视频在线观看| 一本大道综合伊人精品热热| 性欧美疯狂xxxxbbbb| 精品国产电影一区二区| 99热99精品| 美女高潮久久久| 亚洲免费在线视频一区 二区| 欧美精品高清视频| 成人av免费网站| 蜜桃av一区二区| 亚洲精品久久7777| 久久天天做天天爱综合色| 色视频一区二区| 国产精品亚洲成人| 亚洲成a人在线观看| 中文一区在线播放| 日韩欧美成人午夜| 91久久久免费一区二区| 韩国av一区二区三区四区| 亚洲综合一区二区| 国产精品你懂的| 日韩一区二区视频| 欧美色综合网站| 91视频你懂的| 丰满白嫩尤物一区二区| 精品在线一区二区| 亚洲.国产.中文慕字在线| 中文字幕欧美一区| 国产日韩精品一区| 日韩精品一区二区在线| 欧美吻胸吃奶大尺度电影 | 久草这里只有精品视频| 亚洲一区二区三区四区在线免费观看 | 五月天网站亚洲| 亚洲乱码中文字幕综合| 国产视频一区二区三区在线观看| 91高清视频免费看| 99久久久精品| 成人一区二区在线观看| 视频一区二区中文字幕| 亚洲超丰满肉感bbw| 亚洲一区中文在线| 亚洲精品国产一区二区三区四区在线| 国产香蕉久久精品综合网| 欧美成人官网二区| 日韩欧美一级在线播放| 日韩欧美美女一区二区三区| 欧美精品丝袜久久久中文字幕| 欧美在线啊v一区| 在线观看www91| 欧美三日本三级三级在线播放| 欧美做爰猛烈大尺度电影无法无天| jlzzjlzz欧美大全| 91在线观看高清| 在线观看亚洲成人| 欧美精品v日韩精品v韩国精品v| 欧美日韩国产在线观看| 欧美一区二区福利视频| 精品久久久久久无| 国产亚洲女人久久久久毛片| 中文在线一区二区| 亚洲免费在线电影| 亚洲电影在线免费观看| 亚洲成人午夜电影| 美女在线观看视频一区二区| 国产专区欧美精品| 成人听书哪个软件好| 91成人在线免费观看| 91精品久久久久久久91蜜桃| 精品福利av导航| 国产精品黄色在线观看| 洋洋av久久久久久久一区| 日本vs亚洲vs韩国一区三区 | 欧美人妇做爰xxxⅹ性高电影 | 亚洲一区二区中文在线| 男人操女人的视频在线观看欧美| 国产伦精品一区二区三区免费 | 欧美性猛片xxxx免费看久爱| 欧美成人a∨高清免费观看| 国产精品三级在线观看| 亚洲二区视频在线| 国产成人免费av在线| 91黄色在线观看| 26uuu久久天堂性欧美| 亚洲美女屁股眼交3| 久久精品久久精品| 一本久久a久久精品亚洲| 日韩女优毛片在线| 日韩理论片中文av| 美女尤物国产一区| 91久久精品国产91性色tv| 精品国产网站在线观看| 亚洲人妖av一区二区| 麻豆国产91在线播放| 色域天天综合网| 国产欧美一区二区精品秋霞影院 | 成人av网站在线| 欧美精品一区二区不卡| 亚洲1区2区3区4区|