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 相关文章推荐
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
JS中setTimeout()的用法详解
Apr 14 Javascript
Js nodeType 属性全面解析
Nov 14 Javascript
JQuery.validate在ie8下不支持的快速解决方法
May 18 Javascript
jQueryUI中的datepicker使用方法详解
May 25 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
详解开发react应用最好用的脚手架 create-react-app
Apr 24 Javascript
vue鼠标悬停事件实例详解
Apr 01 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
Sep 12 Javascript
JavaScript事件冒泡机制原理实例解析
Jan 14 Javascript
全面解析JavaScript Module模式
Jul 24 Javascript
vue在图片上传的时候压缩图片
Nov 18 Vue.js
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
php实现的MySQL通用查询程序
2007/03/11 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
python中global与nonlocal比较
2014/11/21 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
python assert的用处示例详解
2019/04/01 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
特色蛋糕店创业计划书
2014/01/28 职场文书
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
119消防日活动总结
2014/08/29 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
环保建议书作文400字
2015/09/14 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书