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 相关文章推荐
参考:关于Javascript中实现暂停的几篇文章
Mar 04 Javascript
超级简单的图片防盗(HTML),好用
Apr 08 Javascript
Prototype Date对象 学习
Jul 12 Javascript
JavaScript 自动分号插入(JavaScript synat:auto semicolon insertion)
Nov 04 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
Jan 11 Javascript
jquery checkbox全选、取消全选实现代码
Mar 05 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 Javascript
jquery()函数的三种语法介绍
Oct 09 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
Apr 16 Javascript
ES6的新特性概览
Mar 10 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 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生成缩略图的代码
2011/01/12 PHP
php利用cookie实现访问次数统计代码
2011/05/19 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
js继承实现方法详解
2016/12/16 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
理货员的岗位职责
2013/11/23 职场文书
小松树教学反思
2014/02/11 职场文书
2014年材料员工作总结
2014/11/19 职场文书