utilityoverlay.js

来自「现在很火的邮件客户端软件thunderbird的源码」· JavaScript 代码 · 共 206 行

JS
206
字号
/* -*- Mode: Java; tab-width: 2; 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.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): *   Alec Flett <alecf@netscape.com> * * Alternatively, the contents of this file may be used under the terms of * either of 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 ***** *//** * Communicator Shared Utility Library * for shared application glue for the Communicator suite of applications **//*  Note: All Editor/Composer-related methods have been moved to editorApplicationOverlay.js,  so app windows that require those must include editorNavigatorOverlay.xul*/var gShowBiDi = false;function GetStringPref(name){  try {    return pref.getComplexValue(name, Components.interfaces.nsISupportsString).data;  } catch (e) {}  return "";}var goPrefWindow = 0;function getBrowserURL() {  try {    var prefs = Components.classes["@mozilla.org/preferences-service;1"]                         .getService(Components.interfaces.nsIPrefBranch);    var url = prefs.getCharPref("browser.chromeURL");    if (url)      return url;  } catch(e) {  }  return "chrome://navigator/content/navigator.xul";}// update menu items that rely on focusfunction goUpdateGlobalEditMenuItems(){  goUpdateCommand('cmd_undo');  goUpdateCommand('cmd_redo');  goUpdateCommand('cmd_cut');  goUpdateCommand('cmd_copy');  goUpdateCommand('cmd_paste');  goUpdateCommand('cmd_selectAll');  goUpdateCommand('cmd_delete');  if (gShowBiDi)    goUpdateCommand('cmd_switchTextDirection');}// update menu items that rely on the current selectionfunction goUpdateSelectEditMenuItems(){  goUpdateCommand('cmd_cut');  goUpdateCommand('cmd_copy');  goUpdateCommand('cmd_delete');  goUpdateCommand('cmd_selectAll');}// update menu items that relate to undo/redofunction goUpdateUndoEditMenuItems(){  goUpdateCommand('cmd_undo');  goUpdateCommand('cmd_redo');}// update menu items that depend on clipboard contentsfunction goUpdatePasteMenuItems(){  goUpdateCommand('cmd_paste');}// update Find As You Type menu items, they rely on focusfunction goUpdateFindTypeMenuItems(){  goUpdateCommand('cmd_findTypeText');  goUpdateCommand('cmd_findTypeLinks');}// Gather all descendent text under given document node.function gatherTextUnder ( root ) {  var text = "";  var node = root.firstChild;  var depth = 1;  while ( node && depth > 0 ) {    // See if this node is text.    if ( node.nodeType == Node.TEXT_NODE ) {      // Add this text to our collection.      text += " " + node.data;    } else if ( node instanceof HTMLImageElement ) {      // If it has an alt= attribute, use that.      var altText = node.getAttribute( "alt" );      if ( altText && altText != "" ) {        text = altText;        break;      }    }    // Find next node to test.    // First, see if this node has children.    if ( node.hasChildNodes() ) {      // Go to first child.      node = node.firstChild;      depth++;    } else {      // No children, try next sibling.      if ( node.nextSibling ) {        node = node.nextSibling;      } else {        // Last resort is our next oldest uncle/aunt.        node = node.parentNode.nextSibling;        depth--;      }    }  }  // Strip leading whitespace.  text = text.replace( /^\s+/, "" );  // Strip trailing whitespace.  text = text.replace( /\s+$/, "" );  // Compress remaining whitespace.  text = text.replace( /\s+/g, " " );  return text;}function GenerateValidFilename(filename, extension){  if (filename) // we have a title; let's see if it's usable  {    // clean up the filename to make it usable and    // then trim whitespace from beginning and end    filename = validateFileName(filename).replace(/^\s+|\s+$/g, "");    if (filename.length > 0)      return filename + extension;  }  return null;}function validateFileName(aFileName){  var re = /[\/]+/g;  if (navigator.appVersion.indexOf("Windows") != -1) {    re = /[\\\/\|]+/g;    aFileName = aFileName.replace(/[\"]+/g, "'");    aFileName = aFileName.replace(/[\*\:\?]+/g, " ");    aFileName = aFileName.replace(/[\<]+/g, "(");    aFileName = aFileName.replace(/[\>]+/g, ")");  }  else if (navigator.appVersion.indexOf("Macintosh") != -1)    re = /[\:\/]+/g;    return aFileName.replace(re, "_");}function goToggleToolbar( id, elementID ){  var toolbar = document.getElementById( id );  var element = document.getElementById( elementID );  if ( toolbar )  {    var isHidden = toolbar.getAttribute("hidden") == "true";    toolbar.setAttribute("hidden", !isHidden);    if ( element )      element.setAttribute("checked", isHidden)    document.persist(id, 'hidden');    document.persist(elementID, 'checked');  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?