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 相关文章推荐
jQuery 入门级学习笔记及源码
Jan 22 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
JavaScript+CSS控制打印格式示例介绍
Jan 07 Javascript
Javascript中的Array数组对象详谈
Mar 03 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
Jquery ajax请求导出Excel表格的实现代码
Jun 08 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
javaScript动态添加Li元素的实例
Feb 24 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
微信小程序实现自动定位功能
Oct 31 Javascript
js瀑布流布局的实现
Jun 28 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php析构函数的简单使用说明
2015/08/24 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
js中继承的几种用法总结(apply,call,prototype)
2013/12/26 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
python使用socket远程连接错误处理方法
2015/04/29 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
Python实现TCP通信的示例代码
2019/09/09 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
基于html和CSS3制作酷炫的导航栏
2015/09/23 HTML / CSS
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
自我评价的写作规则
2014/01/06 职场文书
社区七一党员活动方案
2014/01/25 职场文书
作风建设整改方案
2014/10/27 职场文书
先进典型事迹材料
2014/12/29 职场文书
白银帝国观后感
2015/06/17 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS