代码解读
请各位高手,详细帮我解读以下代码好吗?<script language="javascript">
<!--
float_init = 1;
function DHTML_Init(Object) {
if (navigator.userAgent.match(/Mozilla\/5\../) && float_init) {
SetObjectOffsetTop(Object, undefined);
}
}
function All (ID) {
if (document.all) { return document.all[ID]; }
else if (document.documentElement){
return document.getElementById (ID);
}
else if (document.layers) { return document.layers[ID]; }
}
function GetWindowOffsetTop() {
if (window.innerHeight) { return window.pageYOffset; }
else if (document.body) { return document.body.scrollTop; }
}
function GetWindowHeight() {
if (window.innerHeight) { return window.innerHeight; }
else if (document.body) { return document.body.clientHeight; }}
function GetObjectHeight(Object) {
DHTML_Init(Object);
if (document.all || document.documentElement) {
Clip = Object.style.clip;
if (! Clip) { return Object.offsetHeight; }
else { return GetClipElement (Clip, 'Bottom'); }}
else if (document.layers) { return Object.clip.height; }}
function GetClipElement (Clip, Element) {
Clip = Clip.substr(Clip.indexOf('(') + 1);
Clip = Clip.substr(0, Clip.length - 1);
Clippers = Clip.split (" ");
for (i = 0; i < Clippers.length; i++) {
if (Clippers[i] != 'auto') {
Clippers[i] = Clippers[i].replace (/D/g, ""); }
}
ClipTop = Number(Clippers[0]);
ClipRight = Number(Clippers[1]);
ClipBottom = Number(Clippers[2]);
ClipLeft = Number(Clippers[3]);
if (Element == 'Top') { return ClipTop; }
else if (Element == 'Right') { return ClipRight; }
else if (Element == 'Bottom') { return ClipBottom; }
else if (Element == 'Left') { return ClipLeft; }
else { return undefined; }}
function GetObjectOffsetTop(Object) {
DHTML_Init(Object);
if (Object.offsetTop) { return Object.offsetTop; }
else if (document.layers) { return Object.top; }
}
function SetObjectOffsetTop(Object, Offset) {
if (Object.style) { Object.style.top = Offset; }
else if (Object.top) { Object.top = Offset; }}
CenterMenu = 1;
MenuBorder = 100;
TimeCheck = 250;
TimeUpdate = 15;
DivUpdate = 15;
Minimum = 50;
AddHeight = -4;
function ScrollMenu() {
Menu = All('persistMenu');
WinTop = GetWindowOffsetTop();
WinHeight = GetWindowHeight() + AddHeight;
MenuTop = GetObjectOffsetTop(Menu);
MenuHeight = GetObjectHeight (Menu);
MenuNew = (CenterMenu) ? Math.round (WinTop + (WinHeight - MenuHeight) / 1) : WinTop + MenuBorder;
if (MenuNew < Minimum)
{ MenuNew = Minimum; }
if (MenuTop != MenuNew) {
if ( (MenuTop + MenuHeight) < WinTop || MenuTop > (WinTop + WinHeight) ) {
SetObjectOffsetTop (Menu, (MenuTop < MenuNew) ? (WinTop - MenuHeight) : (WinTop + WinHeight));
}
else {
Add = (MenuTop < MenuNew) ? 1 : -1;
SetObjectOffsetTop (Menu, MenuTop + Math.round((MenuNew - MenuTop) / DivUpdate) + Add);
}
}
window.setTimeout('ScrollMenu()', (GetObjectOffsetTop(Menu) == MenuNew) ? TimeCheck : TimeUpdate);
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
}
//-->
</script>