?? window.js
字號:
//*****************************************************************************
// Do not remove this notice.
//
// Copyright 2001 by Mike Hall.
// See http://www.brainjar.com for terms of use.
//*****************************************************************************
// Determine browser and version.
function Browser() {
var ua, s, i;
this.isIE = false; // Internet Explorer
this.isNS = false; // Netscape
this.version = null;
ua = navigator.userAgent;
s = "MSIE";
if ((i = ua.indexOf(s)) >= 0) {
this.isIE = true;
this.version = parseFloat(ua.substr(i + s.length));
return;
}
s = "Netscape6/";
if ((i = ua.indexOf(s)) >= 0) {
this.isNS = true;
this.version = parseFloat(ua.substr(i + s.length));
return;
}
// Treat any other "Gecko" browser as NS 6.1.
s = "Gecko";
if ((i = ua.indexOf(s)) >= 0) {
this.isNS = true;
this.version = 6.1;
return;
}
}
var browser = new Browser();
//=============================================================================
// Window Object
//=============================================================================
function Window(el) {
var i, mapList, mapName;
// Get window components.
this.frame = el;
this.titleBar = winFindByClassName(el, "titleBar");
this.titleBarText = winFindByClassName(el, "titleBarText");
this.titleBarButtons = winFindByClassName(el, "titleBarButtons");
this.clientArea = winFindByClassName(el, "clientArea");
// Find matching button image map.
mapName = this.titleBarButtons.useMap.substr(1);
mapList = document.getElementsByTagName("MAP");
for (i = 0; i < mapList.length; i++)
if (mapList[i].name == mapName)
this.titleBarMap = mapList[i];
// Save colors.
this.activeFrameBackgroundColor = this.frame.style.backgroundColor;
this.activeFrameBorderColor = this.frame.style.borderColor;
this.activeTitleBarColor = this.titleBar.style.backgroundColor;
this.activeTitleTextColor = this.titleBar.style.color;
this.activeClientAreaBorderColor = this.clientArea.style.borderColor;
if (browser.isIE)
this.activeClientAreaScrollbarColor = this.clientArea.style.scrollbarBaseColor;
// Save images.
this.activeButtonsImage = this.titleBarButtons.src;
this.inactiveButtonsImage = this.titleBarButtons.longDesc;
// Set flags.
this.isOpen = false;
this.isMinimized = false;
// Set methods.
this.open = winOpen;
this.close = winClose;
this.minimize = winMinimize;
this.restore = winRestore;
this.makeActive = winMakeActive;
// Set up event handling.
this.frame.parentWindow = this;
this.frame.onmousemove = winResizeCursorSet;
this.frame.onmouseout = winResizeCursorRestore;
this.frame.onmousedown = winResizeDragStart;
this.titleBar.parentWindow = this;
this.titleBar.onmousedown = winMoveDragStart;
this.clientArea.parentWindow = this;
this.clientArea.onclick = winClientAreaClick;
for (i = 0; i < this.titleBarMap.childNodes.length; i++)
if (this.titleBarMap.childNodes[i].tagName == "AREA")
this.titleBarMap.childNodes[i].parentWindow = this;
// Calculate the minimum width and height values for resizing
// and fix any initial display problems.
var initLt, initWd, w, dw;
// Save the inital frame width and position, then reposition
// the window.
initLt = this.frame.style.left;
initWd = parseInt(this.frame.style.width);
this.frame.style.left = -this.titleBarText.offsetWidth + "px";
// For IE, start calculating the value to use when setting
// the client area width based on the frame width.
if (browser.isIE) {
this.titleBarText.style.display = "none";
w = this.clientArea.offsetWidth;
this.widthDiff = this.frame.offsetWidth - w;
this.clientArea.style.width = w + "px";
dw = this.clientArea.offsetWidth - w;
w -= dw;
this.widthDiff += dw;
this.titleBarText.style.display = "";
}
// Find the difference between the frame's style and offset
// widths. For IE, adjust the client area/frame width
// difference accordingly.
w = this.frame.offsetWidth;
this.frame.style.width = w + "px";
dw = this.frame.offsetWidth - w;
w -= dw;
this.frame.style.width = w + "px";
if (browser.isIE)
this.widthDiff -= dw;
// Find the minimum width for resize.
this.isOpen = true; // Flag as open so minimize call will work.
this.minimize();
// Get the minimum width.
if (browser.isNS && browser.version >= 1.2)
// For later versions of Gecko.
this.minimumWidth = this.frame.offsetWidth;
else
// For all others.
this.minimumWidth = this.frame.offsetWidth - dw;
// Find the frame width at which or below the title bar text will
// need to be clipped.
this.titleBarText.style.width = "";
this.clipTextMinimumWidth = this.frame.offsetWidth - dw;
// Set the minimum height.
this.minimumHeight = 1;
// Restore window. For IE, set client area width.
this.restore();
this.isOpen = false; // Reset flag.
initWd = Math.max(initWd, this.minimumWidth);
this.frame.style.width = initWd + "px";
if (browser.isIE)
this.clientArea.style.width = (initWd - this.widthDiff) + "px";
// Clip the title bar text if needed.
if (this.clipTextMinimumWidth >= this.minimumWidth)
this.titleBarText.style.width = (winCtrl.minimizedTextWidth + initWd - this.minimumWidth) + "px";
// Restore the window to its original position.
this.frame.style.left = initLt;
}
//=============================================================================
// Window Methods
//=============================================================================
function winOpen() {
if (this.isOpen)
return;
// Restore the window and make it visible.
this.makeActive();
this.isOpen = true;
if (this.isMinimized)
this.restore();
this.frame.style.visibility = "visible";
}
function winClose() {
// Hide the window.
this.frame.style.visibility = "hidden";
this.isOpen = false;
}
function winMinimize() {
if (!this.isOpen || this.isMinimized)
return;
this.makeActive();
// Save current frame and title bar text widths.
this.restoreFrameWidth = this.frame.style.width;
this.restoreTextWidth = this.titleBarText.style.width;
// Disable client area display.
this.clientArea.style.display = "none";
// Minimize frame and title bar text widths.
if (this.minimumWidth)
this.frame.style.width = this.minimumWidth + "px";
else
this.frame.style.width = "";
this.titleBarText.style.width = winCtrl.minimizedTextWidth + "px";
this.isMinimized = true;
}
function winRestore() {
if (!this.isOpen || !this.isMinimized)
return;
this.makeActive();
// Enable client area display.
this.clientArea.style.display = "";
// Restore frame and title bar text widths.
this.frame.style.width = this.restoreFrameWidth;
this.titleBarText.style.width = this.restoreTextWidth;
this.isMinimized = false;
}
function winMakeActive() {
if (winCtrl.active == this)
return;
// Inactivate the currently active window.
if (winCtrl.active) {
winCtrl.active.frame.style.backgroundColor = winCtrl.inactiveFrameBackgroundColor;
winCtrl.active.frame.style.borderColor = winCtrl.inactiveFrameBorderColor;
winCtrl.active.titleBar.style.backgroundColor = winCtrl.inactiveTitleBarColor;
winCtrl.active.titleBar.style.color = winCtrl.inactiveTitleTextColor;
winCtrl.active.clientArea.style.borderColor = winCtrl.inactiveClientAreaBorderColor;
if (browser.isIE)
winCtrl.active.clientArea.style.scrollbarBaseColor = winCtrl.inactiveClientAreaScrollbarColor;
if (browser.isNS && browser.version < 6.1)
winCtrl.active.clientArea.style.overflow = "hidden";
if (winCtrl.active.inactiveButtonsImage)
winCtrl.active.titleBarButtons.src = winCtrl.active.inactiveButtonsImage;
}
// Activate this window.
this.frame.style.backgroundColor = this.activeFrameBackgroundColor;
this.frame.style.borderColor = this.activeFrameBorderColor;
this.titleBar.style.backgroundColor = this.activeTitleBarColor;
this.titleBar.style.color = this.activeTitleTextColor;
this.clientArea.style.borderColor = this.activeClientAreaBorderColor;
if (browser.isIE)
this.clientArea.style.scrollbarBaseColor = this.activeClientAreaScrollbarColor;
if (browser.isNS && browser.version < 6.1)
this.clientArea.style.overflow = "auto";
if (this.inactiveButtonsImage)
this.titleBarButtons.src = this.activeButtonsImage;
this.frame.style.zIndex = ++winCtrl.maxzIndex;
winCtrl.active = this;
}
//=============================================================================
// Event handlers.
//=============================================================================
function winClientAreaClick(event) {
// Make this window the active one.
this.parentWindow.makeActive();
}
//-----------------------------------------------------------------------------
// Window dragging.
//-----------------------------------------------------------------------------
function winMoveDragStart(event) {
var target;
var x, y;
if (browser.isIE)
target = window.event.srcElement.tagName;
if (browser.isNS)
target = event.target.tagName;
if (target == "AREA")
return;
this.parentWindow.makeActive();
// Get cursor offset from window frame.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -