(转)IE浏览器的菜单栏和工具栏原理

Cesium实战:3DTiles模型分层分户抽屉效果实现全攻略(附完整代码) 本文详细解析了在Cesium中为3DTiles模型实现分层分户抽屉效果的核心原理与完整代码。通过“主-副双模型”策略,结合属性过滤与矩阵变换,开发者能够创建出可交互、可探索的动态建筑可视化效果,适用于数字孪生、智慧城市及BIM可视化等场景。 阅读详情
1、最基本的弹出窗口代码】
 其实代码非常简单:
 <SCRIPT LANGUAGE="javascript">
 <!--
 window.open ('page.html')
 -->
 </SCRIPT>
 因为这是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript">之间。<!-- 和 -->是对一些版本低的浏览器起作用,在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。
 window.open ('page.html') 用于控制弹出新的窗口page.html,如果page.html不与主窗口在同一路径下,前面应写明路径,绝对路径(http://)和相对路径(../)均可。
 用单引号和双引号都可以,只是不要混用。
 这一段代码可以加入HTML的任意位置,<head>和</head>之间可以,<body>间</body>也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。也可以,越前越早执行,尤其是页面代码长,又想使页面早点弹出就尽量往前放。
 
 【2、经过设置后的弹出窗口】
 下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。我们来定制这个弹出的窗口的外观,尺寸大小,弹出的位置以适应该页面的具体情况。
 <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>
 参数解释:
 <SCRIPT LANGUAGE="javascript"> js脚本开始;
 window.open 弹出新窗口的命令;
 'page.html' 弹出窗口的文件名;
 'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
 height=100 窗口高度;
 width=400 窗口宽度;
 top=0 窗口距离屏幕上方的象素值;
 left=0 窗口距离屏幕左侧的象素值;
 toolbar=no 是否显示工具栏,yes为显示;
 menubar,scrollbars 表示菜单栏和滚动栏。
 resizable=no 是否允许改变窗口大小,yes为允许;
 location=no 是否显示地址栏,yes为允许;
 status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
 </SCRIPT> js脚本结束
 
 【3、用函数控制弹出窗口】
 下面是一个完整的代码:
 <html>
 <head>
 <script LANGUAGE="javascript">
 <!--
 function openwin() {
 window.open ("page.html", "newwindow", "height=100, width=400, toolbar=no,menubar=no, scrollbars=no, resizable=no, location=no, status=no")
 //写成一行
 }
 //-->
 </script>
 </head>
 <body onload="openwin()">
 ...任意的页面内容...
 </body>
 </html>
   这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。
 怎么调用呢?
   方法一:<body onload="openwin()"> 浏览器读页面时弹出窗口;
   方法二:<body onunload="openwin()"> 浏览器离开页面时弹出窗口;
   方法三:用一个连接调用:<a href="#" onclick="openwin()">打开一个窗口</a>
 注意:使用的“#”是虚连接。
   方法四:用一个按钮调用:<input type="button" onclick="openwin()" value="打开窗口">
 
 【4、同时弹出2个窗口】
 对源代码稍微改动一下:
 <script LANGUAGE="javascript">
 <!--
 function openwin() {
 window.open ("page.html", "newwindow", "height=100, width=100, top=0,left=0,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no,status=no")
 //写成一行
 window.open ("page2.html", "newwindow2", "height=100, width=100, top=100,left=100,toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no,status=no")
 //写成一行
 }
 //-->
 </script>
   为避免弹出的2个窗口覆盖,用top和left控制一下弹出的位置不要相互覆盖即可。最后用上面说过的四种方法调用即可。
 注意:2个窗口的name(newwindows和newwindow2)不要相同,或者干脆全部为空。OK?
 
 【5、主窗口打开文件1.htm,同时弹出小窗口page.html】
 如下代码加入主窗口<head>区:
 <script language="javascript">
 <!--
 function openwin() {
 window.open("page.html","","width=200,height=200")
 }
 //-->
 </script>
 加入<body>区:
 <a href="1.htm" onclick="openwin()">open</a>即可。
 
 【6、弹出的窗口之定时关闭控制】
 下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入到page.html的HTML中,可不是主页面中,否则...),让它10秒后自动关闭是不是更酷了?
 首先,将如下代码加入page.html文件的<head>区:
 <script language="javascript">
 function closeit() {
 setTimeout("self.close()",10000) //毫秒
 }
 </script>
 然后,再用<body onload="closeit()"> 这一句话代替page.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗口的代码,10秒钟后就自行关闭该窗口。)
 
 【7、在弹出窗口中加上一个关闭按钮】
 <FORM>
 <INPUT TYPE='BUTTON' value='关闭' onClick='window.close()'>
 </FORM>
 呵呵,现在更加完美了!
 
 【8、内包含的弹出窗口---一个页面两个窗口】
 上面的例子都包含两个窗口,一个是主窗口,另一个是弹出的小窗口。通过下面的例子,你可以在一个页面内完成上面的效果。
 <html>
 <head>
 <SCRIPT LANGUAGE="javascript">
 function openwin()
 {
 OpenWindow=window.open("", "newwin", "height=250, width=250,toolbar=no,scrollbars="+scroll+",menubar=no");
 //写成一行
 OpenWindow.document.write("<TITLE>例子</TITLE>")
 OpenWindow.document.write("<BODY BGCOLOR=#ffffff>")
 OpenWindow.document.write("<h1>Hello!</h1>")
 OpenWindow.document.write("New window opened!")
 OpenWindow.document.write("</BODY>")
 OpenWindow.document.write("</HTML>")
 OpenWindow.document.close()
 }
 </SCRIPT>
 </head>
 <body>
 <a href="#" onclick="openwin()">打开一个窗口</a>
 <input type="button" onclick="openwin()" value="打开窗口">
 </body>
 </html>
 看看OpenWindow.document.write()里面的代码不就是标准的HTML吗?只要按照格式写更多的行即可。千万注意多一个标签或少一个标签就会出现错误。记得用OpenWindow.document.close()结束啊。
 
 【9、终极应用--弹出的窗口之Cookie控制】
 回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?:-(
 有解决的办法吗?当然有!我们使用cookie来控制一下就可以了。首先,将如下代码加入主页面HTML的<HEAD>区:
 <script>
 function openwin(){
 window.open("page.html","","width=200,height=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.length
 end = 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>这一句即可。你可以试着刷新一下这个页面或重新进入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!
 
 
 一种没有边框及菜单栏、工具栏、地址栏、状态栏等的无边框窗口(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内核的浏览器中使用
关于红队方面的学习资料 阅读详情

相关推荐

谷歌Chrome浏览器ie插件

谷歌浏览器 ie插件 ietab

JavaScript BOM 知识点

BOM 浏览器对象模型(Browser Object Model): BOM是使用JavaScript开发web应用程序的核心。 BOM提供了与网业功能无关的浏览器功能对象。 1.window对象 BOM 的核心是 window 对象,表示浏览器的实例。window 对象在浏览器中有两重身份,一个是ECMAScript 中的 Global 对象,另一个就是浏览器窗口的 JavaScript 接口。 这意味着网页中定义的所有对象、变量函数都以 window 作为其 Global 对象,都可以访问其

Hfffs的博客 356

修改IE的标题栏批处理

批处理:修改IE的标题栏\OEM授权\2003优化文件\删除多余网卡

window对象的属性方法

window对象的属性方法 分类:jswindow对象与属性        Window对象是客户端javascript最高层对象之一,只要打开浏览器窗口,不管该窗口中是否有打开的网页,当遇到BODY、FRAMESET或FRAME元素时,都会自动建立window对象的实例。另外,该对象的实例也可由window.open()方法创建。由于window对

叶兴胜 3576

window对象的常用属性方法以及对象

一、window 窗口对象 - Javascript语言描述 --------------------------------------------------------------------- 注:页面上元素name属性JavaScript引用的名称必须一致包括大小写 否则会提示你一个错误信息 "引用的元素为空或者不是对象" -------------------------------...

weixin_30311605的博客 634

1. 浏览器跨 Tab 窗口通信原理

浏览器跨 Tab 窗口通信原理

LBJ辉的前端天地 1819

CListViewCListCtrl

将CListCtrl绑定到CListView 使用GetListCtrl(),*CListCtrl=&GetListCtrl();。 要想显示模式Access数据库那样的,要重载PreCreateWindow,在BOOL CListView::PreCreateWindow(CREATESTRUCT& cs)里添加cs.style |= LVS_REPORT; 。 设置显示样式,调用DWOR

jay202的专栏 1258

clistview clistctrl 有啥区别

<br />说起来,类的命名是个大学问啊<br /> <br />clistview clistctrl让你区分你能区分开吗?<br /> <br />哈哈.单从名字上你能区分了,我就服了你.<br /> <br />clistview继承自cctrlview,cctrlview继承自cview<br />所以,clistview是一个视图<br /> <br />而clistctrl对应的则是list控件.是系统默认支持的样式控件.<br /> <br />你明白了没

Johny的专栏 1203

CListView::GetListCtrl是如何将CListView*换为CListCtrl*的

程序员的兴奋之处在于,总有些时候你会觉得自己TM像从没学过一样。。。 看了这篇文章,我就觉得自己像没学过MFC一样。。看来得把学习MFC源码列入学习计划了。 一石三鸟: MFC使用得更好; 提升C++功力; 深入的探索Windows消息机制。 记得一年前读过《深入浅出MFC》的,奈何那时是硬着头皮读的,没基础,读着收获不大, 现在有必要进行真正的参悟了。   查看MFC中与CL

tianyu的专栏 - Linux site:blog.csdn.net/wishfly 2257

关于CListViewCListCtrl的排序!

今天用到了这些知识,所以记忆下来,方便以后查询!   CListView的排序CListCtrl的排序基本相似,所以在这里一并提一下。   什么时候排序?   当用户点击表头的时候,自然要触发排序函数,进行排序。   如上图所示,点击时间这一列头,要触发排序。   如何响应点击表头这一动作?   点击表头时,触发LVN_COLUMNCLICK消息,我们只需要添加相

李树花开,风中摇曳 4477

vc CListViewCListCtrl的使用

将CListCtrl绑定到CListView 使用GetListCtrl(),*CListCtrl=&GetListCtrl();。要想显示模式Access数据库那样的,要重载PreCreateWindow,在BOOL CListView::PreCreateWindow(CREATESTRUCT& cs)里添加cs.style |= LVS_REPORT; 。设置显示样式,调用DWOR

thanato的专栏 4482

标题栏、菜单栏工具栏、状态栏

1、标题栏 标题栏在计算机软件中,位于窗口最顶部。显示当前应用程序名、文件名等,在许多窗口中,标题栏也包含程序图标、“最小化”、“最大化”、“还原”“关闭”按钮,可以简单地对窗口进行操作。 2、菜单栏 菜单栏实际是一种树型结构,为软件的大多数功能提供功能入口。 点击以后,即可显示出菜单项。菜单栏是按照程序功能分组排列的按钮集合,在标题栏下的水平栏。通常有“文件、编辑、查看、工具、帮助” ...

zxf347085420的博客 4万+

[IE 技巧] 显示/隐藏IE 的菜单/工具栏

IE7/IE8中, 菜单默认是自动隐藏的。 如果想让IE菜单一直显示,可以修改注册表: [HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main] "AlwaysShowMenus"= dword:00000001 (或者在 HKEY_LOCAL_MACHINE 中修改也可以) IE工具栏默认是一...

anjichan4261的博客 342

禁用IE工具栏菜单栏、状态栏、最大化功能

从一个页面跳到WebFrame.aspx页面,并且禁用IE工具栏菜单栏、状态栏、最大化功能,且IE最大化 <script type="text/javascript"> function OpenWebFrame() { window.opener = null; window.open("We...

dawenyou1362的博客 256

解决IE6-IE7下li上下间距变大问题

IE6/7下li会向下产生大约2px的外边距 解决方法:li{vertical-align:top;}或者 li{vertical-align:bottom;} 解决问题! 载于:https://www.cnblogs.com/webdom/p/10213327.html...

weixin_30500105的博客 205

JMenu基本运用

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.AbstractButton;import javax.s

xiangsuixinsheng的专栏 2339

edge浏览器如何新建IE tab

1、打开Edge浏览器后点击右上方三个点“...”,然后选择“扩展”。 2、在左边的搜索框中输入“ie tab”进行搜索,在搜索结果中找到IE Tab,如下图: 点击右侧“获取”,在提示中点击“添加扩展”将,该插件添加到Edge浏览器中, 添加完成后在地址栏由此就可以看到ie插件图标,点击次图标可以启动IE浏览器插件, 然后在address填写你要进入的地址 ...

qq_34823218的博客 4919

浏览器中,按f5(浏览器中的刷新按钮),与f5+ctrl 、回车的区别

简言之: 回 车 : f5 : 发送request请求,但是会用缓存。会返回304. f5+ctrl:发送request请求,且不用缓存,完全是获取一份全新的内容。f5会在request Header中增加 If-Modified-Since: Fri 30 Nov 2007 00:00:00 GMT If-Modified-Since/If-None-Matchf5

ForMyQianDuan的博客 2951

chinaren同学录的字数倒记数

在CHIANREN同学录的最后的快速回复中,会发现有个录入字数倒计算的功能,规定500字,你按一下键,就提示你还可以键入多少个字,其实用JSCRIPT做,页面一看就看到代码了,只不过想法挺新鲜的,以后可以在程序中用。 〈texare id="words" onPropertyChange="textCounter(WRITEMSGTXT.words, 500)"> function textCou

mdot的专栏 4万+

MAC_Address2.rar_Delphi/CppBuilder_C/C++_

取得系统中网卡MAC地址的方法,使用COM GUID API。

上一篇: (原作)ASP.NET中数据库数据导入Excel并打印
下一篇: 在Repeater控件中创建可隐藏区(原作)
mdot
博客等级 码龄24年 10粉丝 118原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值