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实现侧悬浮浮动实例代码
Nov 29 Javascript
通过遮罩层实现浮层DIV登录的js代码
Feb 07 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
js实现div层缓慢收缩与展开的方法
May 11 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
Bootstrap基本组件学习笔记之进度条(15)
Dec 08 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
Feb 16 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
Nov 23 Javascript
JS实现的冒泡排序,快速排序,插入排序算法示例
Mar 02 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 mysql索引问题
2008/06/07 PHP
php curl选项列表(超详细)
2013/07/01 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
layui table 参数设置方法
2018/08/14 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
JSON Web Tokens的实现原理
2017/04/02 Python
python 输出所有大小写字母的方法
2019/01/02 Python
numpy基础教程之np.linalg
2019/02/12 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Python中的With语句的使用及原理
2020/07/29 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
工程预算与管理应届生求职信
2013/10/06 职场文书
圣诞节活动策划方案
2014/06/09 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书