一、 基本变化
SCRIPT LANGUAGE="javascript"!--window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no,resizable=no,location=no, status=no')//写成一行--/SCRIPT
参数解释:
window.open 弹出新窗口的命令;
'page.html' 弹出窗口的文件名;
'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
100 窗口高度;
width=400 窗口宽度;
top=0 窗口距离屏幕上方的象素值;
left=0 窗口距离屏幕左侧的象素值;
toolbar=no 是否显示工具栏,yes为显示;
menubar,scrollbars 表示菜单栏和滚动栏。
resizable=no 是否允许改变窗口大小,yes为允许;
location=no 是否显示地址栏,yes为允许;
status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
二、 弹启一个全屏窗口
加入fullscreen
SCRIPT LANGUAGE="javascript"!--window.open ('page.html', 'newwindow', 'fullscreen') //全屏了,自然其他条件就都失效了--/SCRIPT
三、 打开一个和按F11所见到的一样的窗口
加入channelmode
SCRIPT LANGUAGE="javascript"!--window.open ('page.html', 'newwindow', channelmode)--/SCRIPT
四、 打开一个连标题栏都没有的窗口(无标题、最小、最大、以及关闭按钮)
HTMLHEADMETA http-equiv=Content-Type content="text/html; charset=gb2312"script language="javascript"function unload(){var popUpSizeX=200; //窗口的宽度var popUpSizeY=166; //窗口的高度var popUpLocationX=2;//距离左边的距离 相当于 leftvar popUpLocationY=2;//距离顶端的距离 相当于 top// URL of the popUpvar popUpURL="http://www.33d9.com/default.asp";; //打开页面的路径// ** 下面的就不要随便改了 ***splashWin = window.open("",'x','fullscreen=1, ,scrollbars=auto,resizable=1');splashWin.blur(); // Hide while updatingwindow.focus();splashWin.resizeTo(popUpSizeX,popUpSizeY);splashWin.moveTo(popUpLocationX,popUpLocationY);splashWin.location=popUpURL;}// ENDunload();/script/HEADBODY/BODY/HTML
看看,什么效果? 如果把resizable 设为0 scrollbars = no 呢?
五、 没有最大化按纽的窗口
其实也就是象软件的关于我们的那个窗口一样,下面就是用对话框窗口来实现它。
showModalDialog()以及showModelessDialog()
1.用showModalDialog()
htmlSCRIPT LANGUAGE="javascript"!--showModalDialog('http://www.okajax.com','example04','dialogWidth:400px;dialogHeight:300px;dialogLeft:200px;dialogTop:150px;center:yes;help:yes;resizable:yes;status:yes')//--/SCRIPTbhttp://www.okajax.com//b/body/html
2.用showModelessDialog()
htmlSCRIPT LANGUAGE="javascript"!--showModelessDialog('http://www.okajax.com','example05','dialogWidth:400px;dialogHeight:300px;dialogLeft:200px;dialogTop:150px;center:yes;help:yes;resizable:yes;status:yes')//--/SCRIPTbhttp://www.okajax.com//b/body/html
至于showModalDialog()与showModelessDialog()的区别,在于showModalDialog()打开的窗口(简称模式窗口),置在父窗口上,必须关闭才能访问父窗口(建议尽量少用,以免招人反感);showModelessDialog()(简称无模式窗口),打开后不必关闭也可访问父窗口打开的窗口。
现在我将这里的一些参数说明一下。
dialogHeight: iHeight 设置对话框窗口的高度。
dialogWidth: iWidth 设置对话框窗口的宽度。
dialogLeft: iXPos 设置对话框窗口相对于桌面左上角的left位置。
dialogTop: iYPos 设置对话框窗口相对于桌面左上角的top位置。
center: {yes | no | 1 | 0 } 指定是否将对话框在桌面上居中,默认值是yes。
help: {yes | no | 1 | 0 } 指定对话框窗口中是否显示上下文敏感的帮助图标。默认值是yes。
resizable: {yes | no | 1 | 0 } 指定是否对话框窗口大小可变。默认值是no。
status: {yes | no | 1 | 0 } 指定对话框窗口是否显示状态栏。对于非模式对话框窗口,默认值是yes;对于模式对话框窗口,默认值是 no。
六、 弹出n 个窗口
这很简单,只要执行n 次window.open()就行了,当然一定要给每个窗口起不同的名字,
还有,设置一下left和top,避免重叠。
七、 刷新之后就不再弹出窗口
我们使用cookie来控制一下就可以了。
首先,将如下代码加入主页面HTML的HEAD区:
scriptfunction openwin(){window.open("page.html","","width=200,200")}function get_cookie(Name) {var search = Name + "="var returnvalue = "";if (documents.cookie.length 0) {offset = documents.cookie.indexOf(search)if (offset != -1) {offset += search.lengthend = documents.cookie.indexOf(";", offset);if (end == -1)end = documents.cookie.length;returnvalue=unescape(documents.cookie.substring(offset, end))}}return returnvalue;}function loadpopup(){if (get_cookie('popped')==''){openwin()documents.cookie="popped=yes"}}/script
然后,用body onload="loadpopup()"(注意不是openwin而是loadpop啊!) 替换主页面中原有的BODY这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。
八、 让弹出窗口适应里面图片的大小
很多时候我们需要提供这样的功能给访问者:当访问者点击页面中的缩略图时,其对应的全尺寸图片将显示在一个新的弹出窗口中供访问者查看。
实现此功能的最简单作法是用以下HTML代码创建一个图像链接:
a href="fullsize.jpg" _fcksavedurl=""fullsize.jpg"" target="_blank"img src="small.jpg"/a
其中a标记的href属性指定全尺寸图片的URL,target属性设置为_blank指定在新窗口中显示该图片;img标记的src属性指定缩略图的URL。
如果我们想对显示全尺寸图片的窗口的外观进行某些控制(比如希望弹出窗口的高度、宽度能与全尺寸图片的大小匹配时),则可调用 window.open 方法,该方法接收三个参数,分别指定要打开文件的URL,窗口名及窗口特性,在窗口特性参数中可指定窗口的高度、宽度,是否显示菜单栏、工具栏等。以下代码将显示全尺寸图片在一个没有工具栏、地址栏、状态栏、菜单栏,宽、高分别为400、350的窗口中:
a href="fullsize.jpg" onClick="window.open(this.href,'', 'height=350,width=400,toolbar=no,location=no,status=no,menubar=no');return false"img src="small.jpg"/a
这里就提出了个问题,如果所有全尺寸图片都具有统一的大小(比如都是400x350),那么以上代码适用于所有的缩略图片链接(只是href属性指向的全尺寸图片文件不同)。但如果全尺寸图片的大小并不统一,还用以上代码则我们需要先取得每幅全尺寸图片的大小,然后在window.open方法的窗口特性参数中一一设置height和width为正确的值,在图片数量较多的情况下,这显然效率太低了。那么是否有一劳永逸的方法,即让弹出窗口能自动适应要显示图片的大小?通过研究,发现可以使用 DHTML 中的 Image 对象来达到我们的目的,Image 对象可动态装载指定的图片,通过读取其 width 和 height 属性即能获得装入图片的大小,以此来设置弹出窗口的大小,即可实现自适应图片大小的弹出窗口了。下面即是实现代码:
script language="javascript" type="text/javascript"!--var imgObj;function checkImg(theURL,winName){// 对象是否已创建if (typeof(imgObj) == "object"){// 是否已取得了图像的高度和宽度if ((imgObj.width != 0) && (imgObj.height != 0))// 根据取得的图像高度和宽度设置弹出窗口的高度与宽度,并打开该窗口// 其中的增量 20 和 30 是设置的窗口边框与图片间的间隔量OpenFullSizeWindow(theURL,winName, ",width=" + (imgObj.width+20) + ",height=" + (imgObj.height+30));else// 因为通过 Image 对象动态装载图片,不可能立即得到图片的宽度和高度,所以每隔100毫秒重复调用检查setTimeout("checkImg('" + theURL + "','" + winName + "')", 100)}}function OpenFullSizeWindow(theURL,winName,features) {var aNewWin, sBaseCmd;// 弹出窗口外观参数sBaseCmd = "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,";// 调用是否来自 checkImgif (features == null || features == ""){// 创建图像对象imgObj = new Image();// 设置图像源imgObj.src = theURL;// 开始获取图像大小checkImg(theURL, winName)}else{// 打开窗口aNewWin = window.open(theURL,winName, sBaseCmd + features);// 聚焦窗口aNewWin.focus();}}//--/script
使用时将上面的代码放在网页文档的head/head标记对中,然后在链接的点击事件中调用OpenFullSizeWindow函数,如a href="fullsize.jpg" onClick="OpenFullSizeWindow(this.href,'','');return false"img src="small.jpg"/a即可。
以上代码在IE 5.x-6.0中测试通过。
九、 比较灵活的HTA窗口
我简单介绍一下,HTA的全名为HTML Application,翻译过来就是HTML应用程序,你只要简单的用.hta为扩展名保存HTML页面就算创建了一个HTA文件,下面我们就用HTA来编个窗口,将以下这段代码保存为.hta文件,然后再用浏览器打开,会发现什么?买个关子,自己去瞧瞧。
HTMLHEADTITLEhttp://www.okajax.com//TITLEHTA:APPLICATION ID="oHTA"APPLICATIONNAME="myApp" BORDER="thin" BORDERSTYLE="normal" CAPTION="yes" ICON="filename.ico" MAXIMIZEBUTTON="yes" MINIMIZEBUTTON="yes" SHOWINTASKBAR="no" INGLEINSTANCE="no" SYSMENU="yes" VERSION="1.0" WINDOWSTATE="normal" //HEADBODYbhttp://www.okajax.com//b/BODY/HTML
有人会发现上面这些代码与平时的html有点不同,多了HTA:APPLICATION标签,这就是关键之处,hta通过它来提供一系列面向应用程序的功能,接下来再讲一讲它的属性(我的头又在发胀)
APPLICATIONNAME属性(applicationName)
此属性为设置HTA的名称。
BORDER属性(border)
此属性为设置为HTA的窗口边框类型,默认值为 thick。
它可以设为 thick 指定窗口为粗边框
dialog window 指定窗口为对话框
none 指定窗口无边框
thin 指定窗口为窄边框
BORDERSTYLE属性(borderStyle)
此属性为设置HTA窗口的边框格式,默认值为 normal。
它可以设为
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)normal 普通边框格式
complex 凹凸格式组合边框
raised 凸出的3D边框
static 3D边框格式
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)sunken 凹进的3D边框
CAPTION属性(caption)
此属性为设置HTA窗口是否显示标题栏或标题,默认值为 yes。
ICON属性(icon)
此属性为设置应用程序的图标。
MAXIMIZEBUTTON属性(maximizeButton)
此属性为设置是否在HTA窗口中显示最大化按钮,默认值为 yes。
MINIMIZEBUTTON属性(minimizeButton)
此属性为设置是否在HTA窗口中显示最小化按钮,默认值为 yes。
SHOWINTASKBAR属性(showInTaskBar)
此属性为设置是否在任务栏中显示此应用程序,默认值为 yes。
SINGLEINSTANCE属性(singleInstance)
此属性为设置是否此应用程序同时只能运行一次。次属性以APPLICATIONNAME属性作为标识,默认值为 no。
SYSMENU属性(sysMenu)
此属性为设置是否在HTA窗口中显示系统菜单,默认值为 yes。
VERSION属性(version)
此属性为设置应用程序的版本,默认值为空。
WINDOWSTATE属性(windowState)
此属性为设置HTA窗口的初始大小,默认值为 normal。
它可以设为 normal 默认大小
minmize 最小化
maximize 最大化
以上括号中的是在脚本引用的属性。在脚本中以上属性皆为只读属性。此外,在脚本中还可以使用commandLine属性来检索应用程序启动时的参数。
在HTA中还可以继续使用html中的绝大多数标签、脚本等。