加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

技术:JS关闭浏览器窗口取消提示

(2009-12-15 18:23:32)
标签:

杂谈

分类: 技术

       之前,我们采用了绝大多数网站的做法,在window.close()这样的JS语句之前插入相应的语句,来逃避IE7及以上版本对脚本安全执行管理的机制。通常你所能见到都是利用window.open这样的方法。

      window.opener=null;window.open(‘’,’_self’);window.close();

       我们也许认为没有其他办法来解决了。就当我们准备甩开手的时候,仔细思考一下,我们为何不能模拟正常的窗口关闭操作,按Alt+F4或者点触发标题栏上的关闭图标或者双击标题栏呢?

       以下方法,需要浏览器进行相应设置或安装必要的插件。

方法一:模拟键盘操作按Alt+F4

需要用户机器上安装Windows Script 5.6Windows Script Host Runtime Library)并开启相应权限。

<script language="Javascript">

function onClose()

{

   //模拟Alt+F4

   var shell=new ActiveXObject("WScript.Shell");

   window.focus();

   shell.SendKeys("%{F4}");

   shell.Quit();

}

</script>

<input type="button" name="btn" id="btn" value="关闭" onClick="onClose();"/>

 

方法二:使用WebBrowser实现公开的方法。

<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WebBrowser width=0></OBJECT>

<input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开>

<input name=Button onClick=document.all.WebBrowser.ExecWB(2,1) type=button value=关闭所有>

<input name=Button onClick=document.all.WebBrowser.ExecWB(4,1) type=button value=另存为>

<input name=Button onClick=document.all.WebBrowser.ExecWB(6,1) type=button value=打印>

<input name=Button onClick=document.all.WebBrowser.ExecWB(6,6) type=button value=直接打印>

<input name=Button onClick=document.all.WebBrowser.ExecWB(7,1) type=button value=打印预览>

<input name=Button onClick=document.all.WebBrowser.ExecWB(8,1) type=button value=页面设置>

<input name=Button onClick=document.all.WebBrowser.ExecWB(10,1) type=button value=属性>

<input name=Button onClick=document.all.WebBrowser.ExecWB(17,1) type=button value=全选>

<input name=Button onClick=document.all.WebBrowser.ExecWB(22,1) type=button value=刷新>

<input name=Button onClick=document.all.WebBrowser.ExecWB(45,1) type=button value=关闭>

WebBrowser组件的execWB方法

1.<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></object>

2. 调用方法:

WebBrowser.ExecWB nCmdID, nCmdExecOpt, [pvaIn], [pvaOut]

3. 参数说明:

(a).nCmdID

OLECMDID_OPEN = 1,

OLECMDID_NEW = 2,

OLECMDID_SAVE = 3,

OLECMDID_SAVEAS = 4,

OLECMDID_SAVECOPYAS = 5,

OLECMDID_PRINT = 6,

OLECMDID_PRINTPREVIEW = 7,

OLECMDID_PAGESETUP = 8,

OLECMDID_SPELL = 9,

OLECMDID_PROPERTIES = 10,

OLECMDID_CUT = 11,

OLECMDID_COPY = 12,

OLECMDID_PASTE = 13,

OLECMDID_PASTESPECIAL = 14,

OLECMDID_UNDO = 15,

OLECMDID_REDO = 16,

OLECMDID_selectALL = 17,

OLECMDID_CLEARselectION = 18,

OLECMDID_ZOOM = 19,

OLECMDID_GETZOOMRANGE = 20

OLECMDID_updateCOMMANDS = 21

OLECMDID_REFRESH = 22

OLECMDID_STOP = 23

OLECMDID_HIDETOOLBARS = 24

OLECMDID_SETPROGRESSMAX = 25

OLECMDID_SETPROGRESSPOS = 26

OLECMDID_SETPROGRESSTEXT = 27

OLECMDID_SETTITLE = 28

OLECMDID_SETDOWNLOADSTATE = 29

OLECMDID_STOPDOWNLOAD = 30

上面的关键词都可以在浏览器的菜单里面找到对应的选项﹐大家一看就明白的﹗

(b).nCmdExecOpt

OLECMDEXECOPT_DODEFAULT = 0,

OLECMDEXECOPT_PROMPTUSER = 1,

LECMDEXECOPT_DONTPROMPTUSER = 2,

OLECMDEXECOPT_SHOWHELP = 3

对于这个参数﹐一般来说﹐选1就可以了。

4.常用:

WebBrowser.ExecWB(1,1) 打开

WebBrowser.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口

WebBrowser.ExecWB(4,1) 保存网页

WebBrowser.ExecWB(6,1) 打印

WebBrowser.ExecWB(7,1) 打印预览

WebBrowser.ExecWB(8,1) 打印页面设置

WebBrowser.ExecWB(10,1) 查看页面属性

WebBrowser.ExecWB(15,1) 撤销

WebBrowser.ExecWB(17,1) 全选

WebBrowser.ExecWB(22,1) 刷新

WebBrowser.ExecWB(45,1) 关闭窗体无提示

 

方法三:其他插件

最小化、最大化、关闭窗口

<object id=min classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Minimize"></object>

<object id=max classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"><param name="Command" value="Maximize"></object>

<object id=closeBtn classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><PARAM NAME="Command" value="Close"></object>

<input type=button value=最小化 onclick=min.Click()>

<input type=button value=最大化 onclick=max.Click()>

<input type=button value=关闭 onclick= closeBtn.Click()></div>

附录:其他实用技巧

 

<INPUT type=button onclick="document.execCommand('open')" value=打开>

<INPUT type=button onclick="document.execCommand('saveas')" value=保存>

<INPUT type=button onclick="document.execCommand('print')" value=打印>

<INPUT type=button onclick="document.execCommand('selectall')" value=全选>

<INPUT type=button onclick="location.replace('view-source:'+location)" value=源文件>

<INPUT type=button onclick="window.external.ShowBrowserUI('PrivacySettings',null)" value=安全选项>

<input type=button onClick="window.external.ShowBrowserUI('LanguageDialog', null)" value=语言设置>

<INPUT type=button onclick="window.external.AddFavorite(location.href, document.title)" value=加入收藏夹>

<INPUT type=button onclick="window.external.ShowBrowserUI('OrganizeFavorites', null)" value=整理收藏夹>

<INPUT onclick=history.go(-1) type=submit value=后退>

<INPUT onclick=history.go(1) type=submit value=前进>

<input type=button value=刷新 name=refresh onclick="window.location.reload()">

<input type="button" value="导入收藏夹" onClick=window.external.ImportExportFavorites(true,'');>

<input type="button" value="导出收藏夹" onClick=window.external.ImportExportFavorites(false,'');>

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有