请帮我看看如何改善这段模拟 windows 的程序,不够分再加
mtide 2003-05-08 09:59:11 现在主要的问题是,如何在新建一个窗口的时候,赋予一个唯一的对象,方便以后的操作!
--- 1st part ----
<html>
<head>
<title>window.net ver 0.1</title>
<style type="text/css"> input.smallInput{border:1px solid black;FONT-SIZE: 9pt; FONT-STYLE: normal; FONT-VARIANT: normal; FONT-WEIGHT: normal; HEIGHT: 18px; LINE-HEIGHT: normal}
</style>
<!-- gid.js -->
<script language="javascript">
function showMenu() {
divTemp.innerHTML = this.name + "," + this.style + "," + this.item;
}
function menu(name, style, item) {
this.name = name;
this.style = style;
this.item = item;
this.showMenu = showMenu; //method
}
function addInDiv() {
var code = divTemp.innerHTML;
var codeCap, codeTail, codetoolBar, codeMenu, codeBody, codeStaticBar;
this.start = code.lastIndexOf("</WINDOW>");
if (this.start == -1) this.start = 0;
this.taskBarID = addTotaskBar(this);
codeCap = "<window name=" + this.id + ">";
codeCap += "<div id=" + this.id + " style='Z-INDEX:1; LEFT:0px; WIDTH:419px; POSITION:absolute; TOP:0px; HEIGHT:194px; taskID:" + this.taskBarID + ";'>";
codeCap += "<table width='100%' height='100%' border=1 cellpadding=0 cellspacing=0 bgcolor=#0a246a>";
codeCap += " <tr> <td height=14>";
codetoolBar = "<table width='100%' height='100%' border=0 cellpadding=0 cellspacing=0 onmousedown='makeActive(" + this.id + ")'; style='CURSOR:default'>";
codetoolBar += "<tr> <td width='85%'><img src='SysImg/" + this.logo + "' width=15 height=15> <font size=2 color=#ffffff><b>";
codetoolBar += this.id + "</b></font></td><td width=15%><div align=right><input id='btnMin' type='button' value='_' onclick='winMin(" + this.id + ");'> <img src='SysImg/shutdown16.gif' width=16 height=14 onclick=destory(" + this.id + ");></div>";
codetoolBar += "</td></tr></table></td></tr>";
codeMenu = " "
codeBody = "<tr><td><table width=100% height=100% border=0 cellpadding=0 cellspacing=0 bgcolor=#ffffff><tr><td valign=top> " + this.Body + "</td></tr></table></td></tr>";
codeTail = "</table> </div>" + "</window>";
divTemp.innerHTML = code + codeCap + codetoolBar + codeMenu + codeBody + codeTail;
debug.document.write (divTemp.innerHTML);
}
function destory(winID) {
var temp = '<WINDOW name="' + winID.id + '">';
var start = divTemp.innerHTML.indexOf('<WINDOW name="' + winID.id + '">');
var end = divTemp.innerHTML.indexOf("</WINDOW>", start + 1);
divTemp.innerHTML = divTemp.innerHTML.substring(0, start) + divTemp.innerHTML.substring(end, divTemp.innerHTML.length);
delFromtaskBar(winID);
}
function windows(id, logo, menuBar, Body, staticBar) {
this.id = id;
this.logo = logo;
this.menuBar = menuBar || -1;
this.Body = Body || -1;
this.staticBar = staticBar || -1;
this.taskBarID = 0;
this.addInDiv = addInDiv;
}
function createWindows() {
var winID = new windows("win" + sysNum, 'aboutxp.gif', 'a', '我是一个窗口,口..口...口口...', 1);
winID.addInDiv();
sysNum = sysNum + 1;
}
</script>
<!-- end gid -->
<script language="javascript">
//var fso = new ActiveXObject("scripting.FileSystemObject");
var isSetPIC = 0;
var cFont = "white";
var cBG = "#3a6ea5";
var cMenuBG = "#d4d0c8"
var cHighLight = "#0a246a";
var objActive = 0;
var NULL = 0;
var offsetX = 0;
var offsetY = 0;
var ren = 0;
var sysNum = 0;
function sysInit() {
document.bgColor = cBG;
//renWuLan.style.left = 0;
//renWuLan.style.top = 100;
//renWuLan.style.display = "";
}
//菜单
//弹出
function popupMenu() {
winMenu.style.left = window.event.x;
winMenu.style.top = window.event.y;
winMenu.style.display = "";
return false;
}
//突出显示
function popOutItem(name) {
var item = eval("bg" + name);
var itemTitle = eval("title" + name);
item.bgColor = cHighLight;
itemTitle.style.color = "white";
}
//恢复显示
function revert(name) {
var item = eval("bg" + name);
var itemTitle = eval("title" + name);
item.bgColor = cMenuBG;
itemTitle.style.color = "black";
}
//end menu
//Taskbar
function addTotaskBar(winID) {
var newRow = bufferWin.rows(0);
var newWin = newRow.insertCell();
newWin.innerHTML = "<table width=100% border=1 cellpadding=0 cellspacing=0 style='border-collapse: collapse' bordercolor='#111111' bordercolorlight='#FFFFFF' bordercolordark='#000000' onclick=" + winID.id + ".style.display='';><tr><td>" + winID.id + "</td></tr></table>";
return newWin.cellIndex;
}
function delFromtaskBar(winID) {
var i = 0;
bufferWin.rows(0).deleteCell(winID.style.taskID);
}
//end TaskBar
//窗口
//最小化
function winMin(winID) {
winID.style.display = "none";
}
function moveObj() {
if (objActive != 0) {
objActive.style.left = window.event.x - offsetX;
objActive.style.top = window.event.y - offsetY;
}
return false;
}
function makeActive(obj) {
objActive = eval(obj);
offsetX = window.event.x - parseInt(objActive.style.left);
offsetY = window.event.y - parseInt(objActive.style.top);
}
function destoryActive() {
objActive = 0;
offsetX = 0;
offsetY = 0;
}
//end
//桌面属性
function changeBackGround(imgUrl) {
var picAlign = 1;
var PaintType = typeBGPaint.options[typeBGPaint.selectedIndex].value;
if (PaintType ==1) //居中
DeskTop.innerHTML = "<table border=0 align='center' width='100%' height='100%'><tr><td align='center'><img src='" + imgUrl + "'></td></tr></table>";
else if (PaintType ==2) //平铺
DeskTop.innerHTML = "<table border=0 align='center' width='100%' height='100%' backGround='" + imgUrl + "'><tr><td></td></tr></table>";
else if (PaintType ==3) //拉伸
DeskTop.innerHTML = "<table id='bg' border=0 align='center' width='100%' height='100%'><tr><td align='center'><img src='" + imgUrl + "' width='100%' height='100%'></td></tr></table>";
winMenu.style.display = "none";
return false;
}
function addImg(imgUrl) {
var imgName = imgUrl.substr(imgUrl.lastIndexOf("\\") + 1, imgUrl.lastIndexOf(".") - imgUrl.lastIndexOf("\\") - 1);
imgList.divImgs.innerHTML = imgList.divImgs.innerHTML + "<span value='" + imgUrl + "' style='cursor:hand' onclick='parent.imgPrev.src=this.value;'>" + imgName + "</span><br/>"
}
//end
function reName(src) {
if (ren == 0) {
src.innerHTML = "<input id='srcReName' type='text' value='" + src.style.value + "' size=7 class=smallInput>";
srcReName.select();
ren = 1;
}
else {
src.innerHTML = srcReName.value;
ren = 0;
}
}
function testObj() {
var a = new menu('abc', 1, 'a,b,c');
var b = new windows('b', a, 'hahahha', 1);
b.addInDiv();
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<style type="text/css"> <!-- style { font-size: 12px; }
--></style>
</head>