有时候,我们想通过JS实现一个<a>的新开标签的效果,此时我们想到了window.open方法实现。那么window.open到底应该怎么使用呢?
 
我们知道window.open可以新开窗口或标签页(这通常和浏览器的设置选项有关),载入指定的URL到新的或已存在的窗口中,并返回代表那个窗口的window对象。window.close可以关闭窗口,但是只能自动关闭JS打开的窗口,如果要关闭其他窗口,必须提示用户进行确定或取消操作(这个与浏览器相关,经测IE需要提示才能关闭;其他浏览器不允许自动关闭)。
 
我们可以直接使用window.open()打开窗口,使用window.close()关闭窗口
 
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>window.open和window.close的使用详解</title>
</head>
<body>
<button id="openWindow">打开窗口</button>
<button id="closeWindow">关闭窗口</button>
<script>
(function(){
var $ = function(id) {return document.getElementById(id);}
var win = null;
//打开窗口
$('openWindow').onclick = function() {
win = window.open();
}
//关闭窗口
$('closeWindow').onclick = function() {
win && win.close();
}
//自动关闭窗口
window.close();
})();
</script>
</body>
</html>

  

 
window.open(URL, name[, property][,  boolean])需要四个参数:
第一个参数URL:新窗口中显示的文档的URL,如果省略了或者为空时,会使用'about:blank'
第二个参数name:新窗口的名字,可以配合target使用,如果省略了,会使用‘_blank’(这里需要简单介绍一下:_parent和_top,_parent指的是直接父级窗口,_top指的是顶级祖先窗口)
第三个参数protery:以逗号分割的可选参数,包含窗口大小和各种属性。如果省略了,那么会用默认的大小和标准的UI组件(显式的调用更像是打开窗口,而不是标签)。这个参数是非标准的,HTML5规范也主张浏览器忽略它。
第四个参数boolean:只有在第二个参数命名的是存在的窗口,才有效。声明了由第一个参数指定的URL,替换窗口浏览历史的当前条目。
 
window.opener指的是原始窗口,如果没有的话,为null。
 
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title>window.open和window.close的使用详解</title>
</head>
<body>
<button id="openWindow">打开窗口</button>
<button id="closeWindow">关闭窗口</button>
<script>
(function(){
var $ = function(id) {return document.getElementById(id);}
var win = null;
//打开窗口
$('openWindow').onclick = function() {
win = window.open('about:blank', '_blank', 'width=200,height=200');
//win.opener指的是新窗口原始窗口
//alert(win.opener === window);
}
//关闭窗口
$('closeWindow').onclick = function() {
win && win.close();
//主动关闭窗口后win.opener为false
//alert(win.opener === window);
}
//alert(window.opener === window);
//自动关闭窗口
//window.close();
})();
</script>
</body>
</html>

 

  

 
 
 
 
 

window.open和window.close的使用详解的更多相关文章

  1. Window下PHP三种运行方式图文详解,window下的php是不是单进程的?

    Window下PHP三种运行方式图文详解,window下的php是不是单进程的? PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...

  2. 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  3. iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解

    详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...

  4. 浏览器加载模式:window.onload和$(document).ready()的区别(详解)

    jQuery库文件是在body元素之前加载的,必须等待所有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到. 在延迟等待加载,JavaScript提供了一个事件为load,方法如下: wind ...

  5. window对象的inner/outer/page/screen详解

    innerHeight : 返回窗口的文档显示区的高度,包含工具条与滚动条.说明:ie8以下不支持 outerHeight : 返回窗口的外部高度,包含工具条与滚动条.说明:ie8以下不支持 page ...

  6. Jdk在window环境下的安装与配置详解

    本文为博主原创,转载请注明出处: 1.2  Java程序开发环境的配置 java开发工具包:java开发工具:记事本 IDE,这个只能写小程序,写大程序需要集成开发工具:反编译工具(我们可以在网上找一 ...

  7. window.onload用法详解:

    网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本代码放在网页的底端,这样在运行脚本代 ...

  8. Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697

    详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...

  9. Window.open()方法参数详解

    Window.open()方法参数详解 1, 最基本的弹出窗口代码   window.open('page.html'); 2, 经过设置后的弹出窗口   window.open('page.html ...

  10. 详解HTML中的window对象和document对象

    Window -- 代表浏览器中一个打开的窗口: 对象属性 window //窗口自身 window.self //引用本窗户window=window.self window.name //为窗口命 ...

随机推荐

  1. 【转】ASP.NET MVC框架下使用MVVM模式-KnockOutJS+JQ模板例子

    KnockOutJS学习系列----(一) 好几个月没去写博客了,最近也是因为项目紧张,不过这个不是借口,J. 很多时候可能是因为事情一多,然后没法静下来心来去写点东西,学点东西. 也很抱歉,突然看到 ...

  2. 转载:mybatis和hibernate 解析

    第一章     Hibernate与MyBatis Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀 ...

  3. 10个利用Eclipse调试Java的常见技巧

    http://www.open-open.com/news/view/1ad9099 阅读目录 1. Conditional Breakpoint 2. Exception Breakpoint 3. ...

  4. Linux下编译安装Apache及模块

    Apache是时下最流行的Webserver软件之中的一个,支持多平台,可高速搭建web服务,并且稳定可靠.并可通过简单的API扩充.就能够集成PHP/Python等语言解释器. 文章这里解说怎样在l ...

  5. [React] React Router: setRouteWillLeaveHook

    setRouteWillLeaveHook provides a method for us to intercept a route change before leaving the curren ...

  6. Creating Apps With Material Design —— Defining Shadows and Clipping Views

    View转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢 定义阴影和裁减 材料设计引入了深度的 ...

  7. PHP页面之间跳转方法总结

    编程中,在页面之间进行跳转是必须的.这里列出了三种办法,供参考. 一.用HTTP头信息 也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通 ...

  8. 忘记mysql 5.7的密码

    for windows: http://blog.chinaunix.net/uid-27570589-id-3511820.html 一.将net stop mysql; 二.在命令行中 C:\Us ...

  9. ASP.net 前台页面通过ID获取控件

    asp.net的服务器控件的ID通常只能在服务器端很好的识别,客户端需要通过ClientID获得控件 1.通过js获得   var controlID = "<%=controlID. ...

  10. 从html字符串中获取div内容---jquery

    思考的问题: 怎么在一个网页的div中嵌套另外的网页(不使用inclue,iframe和frame,不使用他们的原因,include只能嵌套静态网页,iframe对网络爬虫影响,frame嵌套网页无法 ...