window对象的open方法

阅读数:219 评论数:0

跳转到新版页面

分类

html/css/js

正文

一、window.open方法 

window.open(pageURL,name,parameters)

返回的是新打开的窗口的引用,即该窗口的window对象,不过引用的window对象并不具备完整的dom属性和方法,仅仅提供了访问该页面的一些基本属性和方法。

blur() 手动移除窗口的焦点方法
close() 关闭该窗口的方法
closed 标识该窗口是否已经被关闭
frames 新窗口内的frames
length 新窗口内frames的数量
location 新窗口window的location对象,用于访问窗口的地址信息
opener 该窗口的打开者
parent 该窗口的父窗口
postMessage 通信接口,通过该方法可以实现向新窗口发送消息,优势是支持跨越
top 当前窗口的项级窗口

1、pageURL

要打开的页面的URL地址。

2、name

该参数只是一个窗口标识,并不是窗口的标题,用于以后通过它来找到对应的窗口的引用。

该参数除了支持普通的名字外,还支持和a标签一样的特殊关键字:_self、_blank、_parent和_top,分别用于在当前窗口、空白窗口、父窗口、项级窗口中打该窗口,具本的行为参考a标签的target属性。

当传入了已经使用过的窗口的名字时,不会打开一个窗口,而是在名字对应的窗口中打开,该窗口之前加载的内容会被替换。

如果总想打开新页面,可以传_blank。

3、parameters

alwaysLowered yes/no 指定窗口隐藏在所有窗口之后
alwaysRaised yes/no 指定窗口悬浮在所有窗口之上
depended yes/no 是否和父窗口同时关闭
height pixel value 窗口高度
width pixel value 窗口的像素宽度
hotkeys yes/no 在没菜单栏的窗口中设安全退出热键
innerHeight pixel value 窗口中文档的像素高度
innerWidth pixel value 窗口中文档的像素宽度
location yes/no 位置栏是否可见
menubar yes/no 菜单栏是否可见
outerHeight pixel value  设定窗口(包括装饰边框)的像素高度
outerWidth pixel value 设定窗口(包括装饰边框)的像素宽度
resizable yes/no 窗口大小是否可调整
screenX pixel value 窗口距屏幕左边界的像素长度
screenY pixel value 窗口距屏幕上边界的像素长度
scrollbars yes/no 窗口是否可有滚动栏
titlebar yes/no 窗口题目栏是否可见
toolbar yes/no 窗口工具栏是否可见
z-look yes/no 窗口被激活后是否浮在其它窗口之上

二、通信问题

使用window.open打开窗口时,新窗口和原窗口之间是可以实现双向通信的。

1、在不跨域的情况下

(1)新窗口通过window.opener可以找到原窗口的window。

// 查找原窗口内的p元素
let p = document.querySelectorAll('p', 
  window.opener.document);

(2)原窗口可以直接通过window.open的返回值访问新窗口。

由于新窗口的加载是异步的,因此不能在调用window.open之后立即访问该窗口,可以在窗口的onload事件内访问新窗口。

let ref = window.open('/index.html');
ref.onload = function(){
  ... // 与新窗口通信
}

2、在跨域的情况下

由于受到浏览器的跨域安全策略的限制,此时就要通过window.postMessage实现页面之间的通信。

(1)在原窗口

let ref = window.open('https://www.baidu.com');
ref.postMessage(data, '*');

(2)在新窗口

window.opener.postMessage(data, '*');



相关推荐

一、script标签属性 async 表示立即下载该脚本,但不妨碍页面中的其他操作,只对外部文件有效。 charset 与src属性一起使用,告诉浏览器用来编码这个javascript程序的

ECMAscript 5添加了第二种运行模式:严格模式(strict mode)。 //针对单个脚本 <script>   "use strict";   console.log("这是严格模式

Javascript中, !表示运算符"非", 如果变量不是布尔类型, 会将变量自动转化为布尔类型

一、基本用法 Object.assign方法用于对象的合并,将源对象的所有可枚举属性复制目标对象。 <

一、window对象 在javascript中,一个浏览器窗口就是一个window对象,window对象以及这些子对象,由于都是用于操作浏览器窗口,所以我们又称为BOM(Browser Object

Math.random()方法会返回介于0(包含)~1(不包含)之间的一个随机数。 舍掉小数点后的数值的方法有很多,如parseInt(),Math.ceil(),Math.flo

一、概述 所有语言中的代理,其本实现的是对原对象的操作的拦截和一些自定义行为。 二、语法  const p = new Proxy(target, handler) 1、target 可以是任何类型的

一、概述 函数实际上是对象,每个函数都是Function类型的实例,而且与其他引用类型一样具有属性和方法,因此函数名实际上也是一个指向函数对象的指针,因为函数名是指针,所以js没有函数重载。 func

navigator.language 属性返回一个表示浏览器当前语言环境的字符串,通常是一个 BCP 47 语言标签。这个语言标签由两个部分组成:语言代码和可选的地区代码。 下面是一个示例代码,展示了

一、概述 页面加载完成有两种事件: 1、ready事件 表示文档结构已经加载完成(不包含图片等非文字媒体文件) 2、onload事件 指示页面包含图片等文件在内的所有元素都加载完成。 二、jQuery