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,水平有待提高
Jan 31 Javascript
JavaScript Event事件学习第一章 Event介绍
Feb 07 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
jquery将一个表单序列化为一个对象的方法
Jan 03 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
vue实现全选、反选功能
Nov 17 Javascript
原生JS封装animate运动框架的实例
Oct 12 Javascript
详解webpack自定义loader初探
Aug 29 Javascript
总结javascript三元运算符知识点
Sep 28 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 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
php下把数组保存为文件格式的实例应用
2010/02/08 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
php向js函数传参的几种方法
2014/08/10 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
全新打包工具parcel零配置vue开发脚手架
2018/01/11 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python3 操作符重载方法示例
2017/11/23 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
Django csrf 验证问题的实现
2018/10/09 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
python实现简单成绩录入系统
2019/09/19 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
为什么Runtime.exec(“ls”)没有任何输出?
2014/10/03 面试题
大学生党课思想汇报
2013/12/29 职场文书
西式婚礼证婚词
2014/01/12 职场文书
安全生产检讨书
2014/01/21 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书