开发者社区> 老朱教授> 正文

无边框全屏窗口之二

简介:
+关注继续查看

http://www.dynamicdrive.com/dynamicindex8/chromeless.htm  ,Gabriel Suchowolski 公布了它的3.5版本无边框窗口代码。
但是,该版本只能在Win2000  和XP上使用,win 2003 并不支持,且IE6+SP1下只能全屏无边框。

但该技术仍然值得研究,目前来讲,要实现IE的无边框网页,仍然有大量限制。比较可行的是

http://www.cnblogs.com/sgsoft/archive/2004/10/13/51679.aspx

所展示的技术。
下面我们看看Gabriel Suchowolski 的代码:
chromeless_35.js

None.gif/*
None.gif    CHROMELESS WINDOWS v.35.1 [ 8.1K ]
None.gif    Licensed under GNU LGPL (www.gnu.org)
None.gif
None.gif    (c) Gabriel Suchowolski,2000 >> www.microbians.com
None.gif    Thanks to Gustavo Ponce >> www.urbanlove.org (resize addon)
None.gif        This script featured on Dynamic Drive (http://www.dynamicdrive.com)
None.gif
*/
None.gif
None.giffunction chromeless(u,n,W,H,X,Y,cU,cO,cL,mU,mO,xU,xO,rU,rO,tH,tW,wB,wBs,wBG,wBGs,wNS,fSO,brd,max,min,res,tsz){
None.gif    var c=(document.all&&navigator.userAgent.indexOf("Win")!=-1)?1:0
None.gif    var v=navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE ")+5,navigator.appVersion.indexOf("MSIE ")+8)
None.gif    min=(v>=5.5?min:false);
None.gif    var w=window.screen.width; var h=window.screen.height
None.gif    var W=W||w; W=(typeof(W)=='string'?Math.ceil(parseInt(W)*w/100):W); W+=(brd*2+2)*c
None.gif    var H=H||h; H=(typeof(H)=='string'?Math.ceil(parseInt(H)*h/100):H); H+=(tsz+brd+2)*c
None.gif    var X=X||Math.ceil((w-W)/2)
None.gif    var Y=Y||Math.ceil((h-H)/2)
None.gif    var s=",width="+W+",height="+H
None.gif
None.gif    if(c){
None.gif        var cTIT='\n'+
None.gif        '<html><head><META HTTP-EQUIV="imagetoolbar" CONTENT="no">\n'+
None.gif        '<script>\n'+
None.gif        'var IcU=new Image();IcU.src="'+cU+'";var IcO=new Image();IcO.src="'+cO+'";var IcL=new Image();IcL.src="'+cL+'";var IxU=new Image();IxU.src="'+xU+'";var IxO=new Image();IxO.src="'+xO+'";var IrU=new Image();IrU.src="'+rU+'";var IrO=new Image();IrO.src="'+rO+'";var ImU=new Image();ImU.src="'+mU+'";var ImO=new Image();ImO.src="'+mO+'"\n'+
None.gif        'document.onmousemove=document.onselectstart=document.ondragstart=document.oncontextmenu=new Function("wMOV();return false");\n'+
None.gif        'b=-1\n'+
None.gif        'wLOA=function(){if(top.ok&&document.body){'+(min?'bMIN.style.visibility="visible";':'')+'bLOA.style.visibility="hidden";wRSZ()}else setTimeout("wLOA()",500)};wLOA()\n'+
None.gif        'wRSZ=function(){var dw=document.body.clientWidth;bCLO.style.pixelLeft=dw-22;bMIN.style.pixelLeft=bLOA.style.pixelLeft=dw-62;bFUL.style.pixelLeft=bRES.style.pixelLeft=dw-42}\n'+
None.gif        'wMAX=function(m){top.mod=m;if(m){top.mT(0,0);top.rT('+w+','+h+');bFUL.style.visibility="hidden";bRES.style.visibility="visible"}else{top.mT(top.px,top.py);top.rT(top.sW,top.sH);bFUL.style.visibility="visible";bRES.style.visibility="hidden"}}\n'+
None.gif        'wDBL=function(){if(!top.mod)wMAX(1);else wMAX(0)}\n'+
None.gif        'wMIN=function(){top.window.moveTo(0,-4000);if(top.opener&&!top.opener.closed){top.opener.window.focus()};top.window.blur()}\n'+
None.gif        'wMOV=function(){\n'+
None.gif        'if(b==0){top.bCOL("'+wBG+'","'+wB+'");b=-1}\n'+
None.gif        'if(b==2&&!top.mod){top.px=event.screenX-ofx-1;top.py=event.screenY-ofy-1;top.mT(top.px,top.py)}\n'+
None.gif        'if(b==1){top.bCOL("'+wBGs+'","'+wBs+'");ofx=event.x;ofy=event.y;b=2}\n'+
None.gif        '}</script></head>\n'+
None.gif        '<body onresize="wRSZ()" bgcolor='+wBG+'>\n'+
None.gif        '<div style="position:absolute;left:5px;top:4px;width:2000px">'+tH+'</div>\n'+
None.gif        '<img id=bMOV style="position:absolute;left:-50px;top:-50px" '+(max?'ondblclick="wDBL()"':'')+' onmousemove="wMOV()" onmousedown="b=1;wMOV()" onmouseup="b=0;wMOV()" border=0 src="" width=2000 height=2000>\n'+
None.gif        '<img id=bFUL style="position:absolute;top:4px;left:'+(W-42)+'px;'+(max?'':'display:none')+'" src="'+xU+'" border=0 onmouseover="this.src=IxO.src" onmouseout="this.src=IxU.src" onmouseup="this.src=IxU.src" onmousedown="this.src=IxU.src" onclick="wMAX(1)">\n'+
None.gif        '<img id=bRES style="position:absolute;top:4px;left:'+(W-42)+'px;visibility:hidden" src="'+rU+'" border=0  onmouseover="this.src=IrO.src" onmouseout="this.src=IrU.src" onmouseup="this.src=IrU.src" onmousedown="this.src=IrU.src" onclick="wMAX(0)">\n'+
None.gif        '<img id=bCLO style="position:absolute;top:4px;left:'+(W-22)+'px;" src="'+cU+'" border=0  onmouseover="this.src=IcO.src" onmouseout="this.src=IcU.src" onmouseup="this.src=IcU.src" onmousedown="this.src=IcU.src" onclick="top.window.close()">\n'+
None.gif        '<img id=bLOA style="position:absolute;top:4px;left:'+(W-62)+'px;" src="'+cL+'" border=0 >\n'+
None.gif        '<img id=bMIN style="position:absolute;top:4px;left:'+(W-62)+'px;visibility:hidden" src="'+mU+'" border=0  onmouseover="this.src=ImO.src" onmouseout="this.src=ImU.src" onmouseup="this.src=ImU.src" onmousedown="this.src=ImU.src" onclick="wMIN()">\n'+
None.gif        '</body>\n'+
None.gif        '</html>'
None.gif        
None.gif        cTIT=cTIT.replace(/\//g,"\\\/").replace(/\"/g,"\\\"").replace(/\n/g,"\\n")
None.gif

None.gif
None.gif        cRES=function(b,s){
None.gif            var tmp='\n'+
None.gif            '<html><head><META HTTP-EQUIV="imagetoolbar" CONTENT="no">\n'+
None.gif            '<script>\n'+
None.gif            'document.onmousemove=document.onselectstart=document.ondragstart=document.oncontextmenu=new Function("wMOV();return false");\n'+
None.gif            'b=-1\n'+
None.gif            'wMOV=function(){if(!top.mod){\n'+
None.gif            'if(b==0){top.sH=top.fH;top.sW=top.fW;b=-1}\n'+
None.gif            'if(b==2&&(1=='+b+'||4=='+b+'||5=='+b+')){tmp=event.screenY-oH;if(top.sH+tmp>100){top.fH=top.sH+tmp}}\n'+
None.gif            'if(b==2&&(2=='+b+'||4=='+b+')){tmp=event.screenX-oW;if(top.sW-tmp>100){top.fW=top.sW-tmp;top.px=event.screenX-ofx-1}}\n'+
None.gif            'if(b==2&&(3=='+b+'||5=='+b+')){tmp=event.screenX-oW;top.fW=top.sW+tmp}\n'+
None.gif            'if(b==2){setTimeout("top.rT(top.fW,top.fH);top.mT(top.px,top.py);",10)}\n'+
None.gif            'if(b==1){ofx=event.x;oH=event.screenY;oW=event.screenX;b=2}\n'+
None.gif            '}}</script></head>\n'+
None.gif            '<body bgcolor='+wBG+'>\n'+
None.gif            '<img style="cursor:'+s+'-resize" id=bMOV style="position:absolute;left:-50px;top:-50px" onmousemove="wMOV()" onmousedown="b=1;wMOV()" onmouseup="b=0;wMOV()" border=0 src="" width=3000 height=2000>\n'+
None.gif            '</body>\n'+
None.gif            '</html>'
None.gif            return tmp.replace(/\//g,"\\\/").replace(/\"/g,"\\\"").replace(/\n/g,"\\n")
None.gif
        }
None.gif
None.gif        var cRESd=cRES(1,'s'),cRESl=cRES(2,'w'),cRESr=cRES(3,'e'),cRESbl=cRES(4,'sw'),cRESbr=cRES(5,'se')
None.gif
None.gif        var cFRM='<HTML><HEAD><TITLE>'+tW+'</TITLE>\n'+
None.gif        '<script>\n'+
None.gif        'ok=0;mod=0;sH=fH='+(H)+';sW=fW='+(W)+';px='+(X)+';py='+(Y)+'\n'+
None.gif        'bCOL=function(c1,c2){fT.document.bgColor=n0.document.bgColor=n1.document.bgColor=n2.document.bgColor=n3.document.bgColor=n4.document.bgColor=c1;bL.document.bgColor=bT.document.bgColor=bR.document.bgColor=bB.document.bgColor=c2}\n'+
None.gif        'mTIT=function(){if(frames.length>8){fT.document.write("'+cTIT+'");fT.document.close();if ('+res+'){n2.document.write("'+cRESd+'");n2.document.close();n1.document.write("'+cRESr+'");n1.document.close();n0.document.write("'+cRESl+'");n0.document.close();n3.document.write("'+cRESbl+'");n3.document.close();n4.document.write("'+cRESbr+'");n4.document.close()};top.bCOL("'+wBG+'","'+wB+'")}else{setTimeout("mTIT()",20)}}\n'+
None.gif        'mT=function(x,y){top.window.moveTo(x,y)}\n'+
None.gif        'rT=function(w,h){top.window.resizeTo(w,h)}\n'+
None.gif        'top.rT(fW,fH);top.mT(px,py)\n'+
None.gif        'mTIT()\n'+
None.gif        '</script></HEAD>\n'+
None.gif        '<frameset onselectstart="return false" onload="top.ok=1" onfocus="if (top.ok&&fT&&fT.wMAX) fT.wMAX(top.mod)" border=0 framespacing=0 frameborder=0 rows="'+tsz+',100%,'+brd+'">\n'+
None.gif        '    <frame name=fT src="about:blank" scrolling=no noresize>\n'+
None.gif        '    <frameset border=0 framespacing=0 frameborder=0 cols="'+brd+',1,100%,1,'+brd+'">\n'+
None.gif        '        <frame name=n0 src="about:blank" scrolling=no noresize>\n'+
None.gif        '        <frame name=bL src="about:blank" scrolling=no noresize>\n'+
None.gif        '            <frameset border=0 framespacing=0 frameborder=0 rows="1,100%,1">\n'+
None.gif        '                <frame name=bT src="about:blank" scrolling=no noresize>\n'+
None.gif        '                <frame name=main src="'+u+'" '+fSO+'>\n'+
None.gif        '                <frame name=bB src="about:blank" scrolling=no noresize>\n'+
None.gif        '            </frameset>\n'+
None.gif        '        <frame name=bR src="about:blank" scrolling=no noresize>\n'+
None.gif        '        <frame name=n1 src="about:blank" scrolling=no noresize>\n'+
None.gif        '    </frameset>\n'+
None.gif        '    <frameset border=0 framespacing=0 frameborder=0 cols="'+brd+',100%,'+brd+'">\n'+
None.gif        '        <frame name=n3 src="about:blank" scrolling=no noresize>\n'+
None.gif        '        <frame name=n2 src="about:blank" scrolling=no noresize>\n'+
None.gif        '        <frame name=n4 src="about:blank" scrolling=no noresize>\n'+
None.gif        '    </frameset>\n'+
None.gif        '</frameset>\n'+
None.gif        '</HTML>'
None.gif
None.gif        var CWIN=window.open("",n,"fullscreen=1"+s)
None.gif        CWIN.moveTo(5000,0)
None.gif        CWIN.ft=true
None.gif        CWIN.document.write(cFRM)
None.gif        CWIN.document.close()
None.gif    } else {
None.gif        var CWIN=window.open(u,n,wNS+s,true)
None.gif        CWIN.moveTo(X,Y)
None.gif    }
None.gif    CWIN.focus()
None.gif    CWIN.setURL=function(u) { if (this && !this.closed) { if (this.frames.main) this.frames.main.location.href=u; else this.location.href=u } }
None.gif    CWIN.closeIT=function() { if (this && !this.closed) this.close() }
None.gif    return CWIN
None.gif}                                                                               
None.gif                                                                               
None.gif
None.gif

应用的网页:

None.gif<html>
None.gif
None.gif<head>
None.gif
None.gif<script language="javascript" type="text/javascript" src="chromeless_35.js"></script>
ExpandedBlockStart.gif<script language="javascript">
InBlock.gif
ExpandedSubBlockStart.gif
/*
InBlock.gifChromeless Window (v3.5)- By Gabriel Suchowolski (this credit MUST stay intact)
InBlock.gifAuthor site at http://www.microbians.com
InBlock.gifVisit http://www.dynamicdrive.com for this script
ExpandedSubBlockEnd.gif
*/

InBlock.gif
InBlock.gif
//For paramater explanations, see accompanying faq.htm file
ExpandedSubBlockStart.gif
function openIT(u,W,H,X,Y,n,b,x,m,r) {
InBlock.gif
var cU ='close.gif' //gif for close on normal state.
InBlock.gif
var cO ='close.gif' //gif for close on mouseover.
InBlock.gif
var cL ='clock.gif' //gif for loading indicator.
InBlock.gif
var mU ='minimize.gif' //gif for minimize to taskbar on normal state.
InBlock.gif
var mO ='minimize.gif' //gif for minimize to taskbar on mouseover.
InBlock.gif
var xU ='max.gif' //gif for maximize normal state.
InBlock.gif
var xO ='max.gif' //gif for maximize on mouseover.
InBlock.gif
var rU ='restore.gif' //gif for minimize on normal state.
InBlock.gif
var rO ='restore.gif' //gif for minimize on mouseover.
InBlock.gif
var tH ='<font face=verdana size=2>Chromeless Window</font>//title for the title bar in html format.
InBlock.gif
var tW ='Chromeless Window' //title for the task bar of Windows.
InBlock.gif
var wB ='#D5D5FF' //Border color.
InBlock.gif
var wBs ='#D5D5FF' //Border color on window drag.
InBlock.gif
var wBG ='#D5D5FF' //Background of the title bar.
InBlock.gif
var wBGs='#D5D5FF' //Background of the title bar on window drag.
InBlock.gif
var wNS ='toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0//Html parameters for Netscape.
InBlock.gif
var fSO ='scrolling=auto noresize' //Html parameters for main content frame.
InBlock.gif
var brd =b||5//Extra border size.
InBlock.gif
var max =x||false//Maxzimize option (true|false).
InBlock.gif
var min =m||false//Minimize to taskbar option (true|false).
InBlock.gif
var res =r||false//Resizable window (true|false).
InBlock.gif
var tsz =20//Height of title bar.
InBlock.gif
return chromeless(u,n,W,H,X,Y,cU,cO,cL,mU,mO,xU,xO,rU,rO,tH,tW,wB,wBs,wBG,wBGs,wNS,fSO,brd,max,min,res,tsz)
ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif
None.gif
</script>
None.gif
None.gif</head>
None.gif
None.gif<body>
None.gif
None.gif<p><href="#" onclick="mywin001=openIT('http://www.google.com',600,400,null,null,'mywin001',5,true,true,true);return false">
None.gifOpen Google.com</a>
None.gif
None.gif<p><href="#" onclick="mywin002=openIT('http://www.dynamicdrive.com/faqs.htm',550,600,null,null,'mywin002',5,false,false,true,'#FF8000','#FFC184');return false">
None.gifDynamic Drive FAQs</a>
None.gif
None.gif</body>
None.gif
None.gif</html>
None.gif
None.gif

在IE 6 +SP1下,他只能支持全屏无边框。希望下一个版本能够采用新的技术,实现任何情况下无边框。




本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/sgsoft/archive/2004/10/13/51691.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)
286 0
Qt-网易云音乐界面实现-1 窗口隐藏拖拽移动,自定义标题栏
最近也换了公司,也换了新的工作,工资也象征性的涨了一点点,但是最近心里还是慌慌,不知道为什么,没有那种踏实感,感觉自己随时可以被抛弃的感觉。感觉自己在荒废时间,也感觉自己在浪费生命。
115 0
WPF之鼠标滑动切换图片
原文:WPF之鼠标滑动切换图片   在网上找了一会儿也没找到我想要的效果,还是自己动手,丰衣足食吧。   需求:当前面板中只显示一张图片,图片栏的下部有用来显示当前图片处于图片队列中的位置的圆球,并且点击下部栏内的圆球可以快速切换,附动画缓动效果。
1023 0
WPF C# 多屏情况下,实现窗体显示到指定的屏幕内
原文:WPF C# 多屏情况下,实现窗体显示到指定的屏幕内 针对于一个程序,需要在两个显示屏上显示不同的窗体,(亦或N个显示屏N个窗体),可以使用如下的方式实现。
3928 0
WPF 自定义窗口关闭按钮
原文:WPF 自定义窗口关闭按钮 关闭图标设计主要涉及主要知识点: 1、Path,通过Path来画线。当然一般水平、竖直也是可以用Rectangle/Border之类的替代      一些简单的线条图标用Path来做,还是很方便的。
948 0
WPF 应用完全模拟 UWP 的标题栏按钮
原文:WPF 应用完全模拟 UWP 的标题栏按钮 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:http://blog.csdn.net/wpwalter/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
907 0
WPF无边框拖动、全屏、缩放
原文:WPF无边框拖动、全屏、缩放 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lwwl12/article/details/78059361 先看效果 无边框 设置WindowStyle=”None”,窗口无关闭及缩放按钮,但还有黑边;设置AllowsTransparency=”True”,黑边没有了。
1665 0
关于wpf中popup跟随鼠标移动显示
原文:关于wpf中popup跟随鼠标移动显示 最近在做一个画图工具,里面有一个功能是需要实现,当鼠标移动的时候在,鼠标的旁边显示坐标信息。 第一反应是想到了tooltip,但是tooltip有许多的限制,查询资料的过程中看到了popup,popup比tooltip更加灵活,下面讲讲tooltip跟popup的区别: 1.tooltip会自动显示,自动隐藏,而popup则需要设置IsOpen属性,并且在Popup.StaysOen属性为true时,Popup控件会一直显示,直到显式地将IsOpen属性设置为False。
1687 0
WPF 悬浮键盘
原文:WPF 悬浮键盘 public class TouchScreenKeyboard : Window { #region Property & Variable & Cons...
721 0
WPF自定义窗口最大化显示任务栏
原文:WPF自定义窗口最大化显示任务栏 当我们要自定义WPF窗口样式时,通常是采用设计窗口的属性 WindowStyle="None" ,然后为窗口自定义放大,缩小,关闭按钮的样式。 然而这样的话,当通过代码设置窗口(代码如下)放大时,窗口会把任务栏给遮档住。
1046 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载