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 相关文章推荐
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
Apr 12 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
Jan 10 Javascript
Javascript单元测试框架QUnitjs详细介绍
May 08 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
Mar 26 Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
Sep 19 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
返回上一个url并刷新界面的js代码
Sep 12 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 Javascript
vuex的使用和简易实现
Jan 07 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中的Streams工具
2015/07/03 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
PHP7 新增功能
2021/03/09 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
在Python中用split()方法分割字符串的使用介绍
2015/05/20 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
python中dict使用方法详解
2019/07/17 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
实习护士自我鉴定
2013/10/13 职场文书
动物科学专业毕业生的自我评价
2013/11/29 职场文书
单位委托书范本
2014/04/04 职场文书
志愿者活动总结范文
2014/04/26 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
优质服务口号
2014/06/11 职场文书
离婚财产处理协议书
2014/09/30 职场文书
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js