全新无边框窗口实现方式[HTML]

原创 2004年09月15日 09:35:00
  一种没有边框及菜单栏、工具栏、地址栏、状态栏等的无边框窗口(CW)曾经一度很流行,被很多网站尤其是个人网站所采用,CW也有现成的源码供网友们使用,但是最初的CW使用起来很不方便,有两个JS文件,还要设置一些参数,这对一些初学者来讲是很困难的事情。所以我就有了一个想法:重新写一个全新的无边框窗口,只用一个函数实现,以供网友方便使用。

  我给这个全新的无边框窗口起名为NBW,NBW即No Border Window的缩写,只是想区别于CW。这个无边框窗口可以随意拖动、最小化、关闭等等,不仅在IE5/IE6中测试通过,在腾讯的TE中测试也没有问题。

  首先看一下实际效果:
  
  调用的过程如下:(noBorderWin函数是事先定义好的,后面会对函数的实现过程进行分析)

  noBorderWin(fileName,w,h,titleBg,moveBg,titleColor,titleWord,scr)

  各参数的说明如下:
  fileName :要打开的文件。
  w     :窗口的宽度(px)。
  h     :窗口的高度(px)。
  titleBg  :窗口“标题栏”的背景色以及窗口边框颜色。
  moveBg  :拖动窗口时“标题栏”的背景色以及窗口边框颜色。
  titleColor:窗口“标题栏”文字的颜色。
  titleWord :窗口“标题栏”中显示的文字。
  scr    :窗口中是否出现滚动条。取值yes/no或者1/0。

  我们看到,窗口样式全部在函数的参数中设置,从而保证了使用的便捷。比如,上面例子的代码如下:
  <a href=#none onclick=noBorderWin('test.html','400','240','#000000','#333333','#CCCCCC','一个无边窗口的测试例子','yes');>点击此处将弹出NBW窗口</a>

  如何使用已经说完了,那么,这个函数具体是如何实现的呢?下面,我们就以直接给出源码并加以注释的方式进行讲解。为了容易区分阅读,代码部分使用灰色,注释部分使用红色。

  代码和注释如下:
//--------------------------------------------------------------------------------------------------

<script language=javascript>
//*****定制NBW窗口中几个用到的图片的路径*****
minimizebar="minimize.gif";   //窗口右上角最小化“按钮”的图片
minimizebar2="minimize2.gif"; //鼠标悬停时最小化“按钮”的图片
closebar="close.gif";         //窗口右上角关闭“按钮”的图片
closebar2="close2.gif";       //鼠标悬停时关闭“按钮”的图片
icon="icon.gif";              //窗口左上角的小图标
//***************定制结束*****************

//*******开始定义noBorderWin()函数********
function noBorderWin(fileName,w,h,titleBg,moveBg,titleColor,titleWord,scr)
{
  var contents="<html>"+
//变量contents是一个字符串变量,它是NBW窗口中的所有代码。
               "<head>"+
               "<title>"+titleWord+"</title>"+
               "<meta http-equiv=/"Content-Type/" content=/"text/html; charset=gb2312/">"+
               "<object id=hhctrl type='application/x-oleobject' classid='clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11'><param name='Command' value='minimize'></object>"+
//注意这一句,是实现窗口的最小化的关键。在后面,将通过hhctrl.Click()来实现最小化。
               "</head>"+
               "<body topmargin=0 leftmargin=0 scroll=no onselectstart='return false' ondragstart='return false'>"+
//为了使窗口更加逼真,在这一句中,屏弊了拖拽事件和选取事件。
               " <table height=100% width=100% cellpadding=0 cellspacing=1 bgcolor="+titleBg+" id=mainTab>"+
               " <tr height=18 style=cursor:default; onmousedown='x=event.x;y=event.y;setCapture();mainTab.bgColor=/""+moveBg+"/";' onmouseup='releaseCapture();mainTab.bgColor=/""+titleBg+"/";' onmousemove='if(event.button==1)self.moveTo(screenLeft+event.x-x,screenTop+event.y-y);'>"+
//在这一句中,实现了NBW窗口的任意拖拽,注意onmousedown、onmouseup和onmousemove时都“发生”了什么,仔细体会其过程。
               " <td width=18 align=center><img height=12 width=12 border=0 src="+icon+"></td>"+
               " <td width="+w+"><span style=font-size:12px;color:"+titleColor+";font-family:宋体;position:relative;top:1px;>"+titleWord+"</span></td>"+
//以上两句,将小图标和标题栏的文字写入。
               " <td width=14><img border=0 width=12 height=12 alt=最小化 src="+minimizebar+" onmousedown=hhctrl.Click(); onmouseover=this.src='"+minimizebar2+"' onmouseout=this.src='"+minimizebar+"'></td>"+ //通过前面提到的方法实现了窗口最小化按钮的功能。
               " <td width=13><img border=0 width=12 height=12 alt=关闭 src="+closebar+" onmousedown=self.close(); onmouseover=this.src='"+closebar2+"' onmouseout=this.src='"+closebar+"'></td>"+ //实现窗口关闭按钮的功能。
               " </tr>"+
               " <tr height=*>"+
               " <td colspan=4>"+
               " <iframe name=nbw_v6_iframe src="+fileName+" scrolling="+scr+" width=100% height=100% frameborder=0></iframe>"+
//在这一句中,将你要打开的文件写到iframe中。
               " </td>"+
               " </tr>"+
               " </table>"+
               "</body>"+
               "</html>";
              //至此,已经定义完contents变量,在后面,我们将看到:它被写入到NBW窗口中去。

  pop=window.open("","_blank","fullscreen=yes"); //打开一个全屏窗口。
  pop.resizeTo(w,h); //用resize()方法将窗口定制成自己想要的大小。
  pop.moveTo((screen.width-w)/2,(screen.height-h)/2); //用moveTo()方法将窗口移到屏幕中心。
  pop.document.writeln(contents); //将窗口内容(即变量contents)写进去。

  //至此,或许你认为它应该结束了。的确,在IE中,它的确已经结束了,但是在使用了IE内核的多窗口浏览器(比如腾讯的TE)中,一般window.open()是不会弹出新窗口的,而是出现在它的“多窗口”中的一个窗口,所以,后面的代码我们将通过窗口大小来判断NBW窗口是否是独立的窗口,如果不是,我们将使用showModalDialog()对话框做为一个过渡,重新“弹”出一个独立的窗口。

  if(pop.document.body.clientWidth!=w||pop.document.body.clientHeight!=h) //通过判断NBW窗口的实际大小来判断NBW是否真正是一个独立的窗口。如果不是,将运行后面的语句。
  {
    temp=window.open("","nbw_v6");
    temp.close();
//上面两句的功能是如果原来有name=nbw_v6的窗口,则将其关闭。
    window.showModalDialog("about:<"+"script language=javascript>window.open('','nbw_v6','fullscreen=yes');window.close();"+"</"+"script>","","dialogWidth:0px;dialogHeight:0px"); //弹出一个对话框,再从对话框中弹出一个name=nbw_v6的全屏窗口,注意这时的窗口肯定是独立的窗口了。
    pop2=window.open("","nbw_v6"); //弹出一个name=nbw_v6的窗口,因为前面弹出过一个name=nbw_v6的全屏窗口,所以这一次的窗口只是在那个窗口中刷新了一下,而通过这样一个过程则把那个窗口赋给了变量pop2。
    pop2.resizeTo(w,h); //用resize()方法将窗口定制成自己想要的大小。
    pop2.moveTo((screen.width-w)/2,(screen.height-h)/2); //用moveTo()方法将窗口移到屏幕中心。
    pop2.document.writeln(contents); //将窗口内容(即变量contents)写进去。
    pop.close(); //将原来没有真正“弹”出来的窗口关掉。
  }
//*******结束定义noBorderWin()函数******** }
</script>
//--------------------------------------------------------------------------------------------------

  至此,全部代码讲解完毕。我们可以看到,在实现过程中我们使用了iframe标记,所以现在的NBW窗口仅限在IE及使用IE内核的浏览器中使用。

  另外,我还制作了一个实例给大家,以方便参照使用,点击此处下载。

  第一次写这个窗口大约是在两个月前了,在此期间先后做了五次改动,在我不断修改的过程中,得到了很多朋友和网友的帮助,在此向他们表示由衷的感谢!

HTML Table设置无边框、无分割线

HTML Table设置无边框、无分割线无边框​ frame属性指定了对于边框显示的规则,其中可以选择的设置有如下几项: void 设置无边框; above 只显示上边框; belo...
  • oYinGui1
  • oYinGui1
  • 2016年09月13日 16:53
  • 12089

弹出无边框页面,(将页面以div的形式弹出)

js代码: function ShowWindow(url, width, height) { $(".mywindow").remove(); var x = $(window)....
  • hutao1101175783
  • hutao1101175783
  • 2013年12月14日 19:43
  • 2196

设置html表格无边框

今天写网页界面写了一个表格然后开始设置表格无任何边框一开始采用常用的方法  加了这么一句话 border="0" cellpadding="0" cellspacing="0" 在本地测试确...
  • songjunyan
  • songjunyan
  • 2015年02月15日 17:09
  • 1616

HTML/CSS简记-隐藏input的边框

网上有好几种方法:简略记录如下: 方法1:    border-style:none"> 方法2:     给input设置border:none;但在iE6下不行,还有边。应该将 borde...
  • QQ635785620
  • QQ635785620
  • 2012年08月09日 20:15
  • 64016

CSS 如何让Table的里面TD全有边框 而Table的右左边框没有

比如这样一个CSS .td3{ font-size: 14px; color: #FFFFFF; background-color: #000000; BORDER-RIGHT: #f6f6...
  • wangdachi
  • wangdachi
  • 2014年05月04日 17:18
  • 4983

全新无边框窗口实现方式

一种没有边框及菜单栏、工具栏、地址栏、状态栏等的无边框窗口(CW)曾经一度很流行,被很多网站尤其是个人网站所采用,CW也有现成的源码供网友们使用,但是最初的CW使用起来很不方便,有两个JS文件,还要设...
  • wjscsdn
  • wjscsdn
  • 2004年10月10日 09:17
  • 519

Qt实现无边框窗体的移动

本文内容,基本参考自互联网 去除窗体边框,移动窗体
  • sunlongtu
  • sunlongtu
  • 2016年03月13日 15:49
  • 1218

HTML小技巧:将table边框改为细线

HTML制作新手在用TABLE表格时,会碰到如何改变边线粗线,因为默认的TABLE边线设置即使是1px 是很粗的。因此会使用其他一些方法来制作出细线边框,这里介绍一种利用CSS来实现细线的方法,很有效...
  • hjp1137
  • hjp1137
  • 2015年09月10日 16:58
  • 4436

html为图片设置边框

设置图像边框 编程词典   编程词典个人版是一套学、查、用为一体的数字化学习编程软件。科学的学习模式、系统的学习方案,实现快速学习、快速提高,真正做到理论与实践相结合。海量的数据资...
  • u010383937
  • u010383937
  • 2017年05月16日 08:02
  • 198

无边框/无标题窗口

dwStyle = GetWindowLong(hWnd, GWL_STYLE);//获取旧样式 dwNewStyle = WS_OVERLAPPED | WS_VISIBLE | WS_SYSME...
  • lslsyqyq
  • lslsyqyq
  • 2015年11月05日 15:16
  • 832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:全新无边框窗口实现方式[HTML]
举报原因:
原因补充:

(最多只允许输入30个字)