window.open()详解及浏览器兼容性问题示例探讨


Posted in Javascript onMay 29, 2014

一、基本语法:
window.open(pageURL,name,parameters)
其中:
pageURL 为子窗口路径
name 为子窗口名字
parameters 为窗口参数(各参数用逗号分隔)

二、示例

<script type="text/javascript"> 
window.open('page.html','newwindow','height=500,width=800,top=0,left=0, 
toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no') 
</script>

page.html将在新窗体newwindow中打开,宽为800,高为500,距屏顶0象素,屏左0象素,

无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。

各浏览器对window.open()的窗口特征sFeatures参数支持程度存在差异

各浏览器运行结果汇总:
window.open()详解及浏览器兼容性问题示例探讨 

上表中为各个浏览器对 features 各参数选项的支持程度,其中需要特殊说明的如下:

【标注1】:IE7 IE8 Firefox Chrome Safari 中,当"menubar"选项为"yes"时,默认不显示菜单栏,需要按ALT键后菜单栏才可显示;相反当 "menubar"选项为"no"时,即使按了ALT键也不会显示菜单栏。
【标注2】:Safari中,开启"location"选项与开启"toolbar"选项时显示效果一致。
【标注3】:IE6 IE8 Chrome 中,使用"top"和"left"定位,如果出现设定的的坐标值过大,弹出窗口将可能显示在屏幕可视范围外。
【标注4】:IE7 Firefox Safari Opera中,使用"top"和"left"定位,如果出现设定的的坐标值过大,窗口会自动调整"top"与"left"值,确保窗口正常显示在屏幕可视区域内。
【标注5】:Chrome Opera中,不支持在没有设定"width"与"height"值的情况下独立使用"left"和"top",此时"left""top"设定值均不生效。
【标注6】:Chrome 中,不支持在没有设定"left"和"height"值的情况下独立使用"width"与"height",此时"width" "height"设定值均不生效。结合【标注5】说明可知,在Chrome中弹出窗口不论想要设定宽高或位置中的一个或几个值,都必须将他们全部赋值,否则都将不起作用。
【标注7】:Firefox Chrome 中,地址栏会始终显示。
【标注8】:Opera 中,地址栏默认不显示,但可以点击页面最上方横条使他显示出来,设置"location=yes"后地址栏会自动显示出来。
【标注9】:Chrome Opera 中,不论"menubar"值如何设置,永远不显示菜单栏。
【标注10】:Firefox Safari Chrome Opera中无论"resizable"值如何设置,窗口永远可由用户调整大小。
【标注11】:Safari Chrome 中,在页面存在滚动条的情况下,无论"scrollbars"值如何设置,滚动条始终可见。
【标注12】:IE7 在 Windows XP SP3 系统中默认可以支持"status "参数隐藏状态栏;而在 Windows Vista系统默认环境下不支持"status"参数,状态栏始终可见.这与两个系统中默认的 IE7 小版本号不同有关,前者版本号较低,后者版本号较高。
【标注13】:Firefox 中,无论"status"值如何设置,状态栏始终可见,而 Chrome Opera中,则与前者相反,状态栏始终不可见。
【标注14】: Chrome Opera 中,无论"toolbar"值如何设置,始终不显示工具栏。
综上所述,可见window.open方法的sFeatures参数支持程度存在巨大差异,使用时须谨慎为之。

一般我们用window.open打开页面都需要居中显示,示例代码:

var width=800; //弹出窗口的宽度; 
var height=500; //弹出窗口的高度; 
var top = (window.screen.availHeight-height)/2; //窗口的垂直位置; 
var left = (window.screen.availWidth-width)/2; //窗口的水平位置; 
window.open('page.html','newwindow','height='+height+',width='+width+',top='+top+',left='+left+', 
toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no')

availHeight和height的区别
window.screen.width 返回当前屏幕宽度(分辨率值) 
window.screen.height 返回当前屏幕高度(分辨率值) 
screen.availWidth,screen.availHeight是指除去taskbar(任务栏)以外的长宽
Javascript 相关文章推荐
js的with语句使用方法
Sep 21 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
Javascript中string转date示例代码
Nov 01 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
JavaScript是如何实现继承的(六种方式)
Mar 31 Javascript
Ionic 2 实现列表滑动删除按钮的方法
Jan 22 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 #Javascript
href下载文件根据id取url并下载
May 28 #Javascript
javascript自定义的addClass()方法
May 28 #Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 #Javascript
用html+css+js实现的一个简单的图片切换特效
May 28 #Javascript
HTML页面登录时的JS验证方法
May 28 #Javascript
22点关于jquery性能优化的建议
May 28 #Javascript
You might like
ADODB的数据库封包程序库
2006/12/31 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
用js实现博客打赏功能
2016/10/24 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
解决vue-photo-preview 异步图片放大失效的问题
2020/07/29 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
Python安装第三方库的3种方法
2015/06/21 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
python在每个字符后添加空格的实例
2018/05/07 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
Python中类的创建和实例化操作示例
2019/02/27 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
python 制作磁力搜索工具
2021/03/04 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
法警的竞聘演讲稿
2014/01/02 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
JS中一些高效的魔法运算符总结
2021/05/06 Javascript