window.parent与window.openner区别介绍

yizhihongxing

window.parent与window.opener区别介绍

在网页中经常出现需要进行页面跳转的情况,比如新窗口打开链接,或者在iframe中嵌入其他网页。在JavaScript中有两个常用的属性可用于控制页面跳转:window.parentwindow.opener。在本文中,将详细介绍这两个属性的区别以及其应用场景。

window.parent

window.parent是一个指向当前页面的父页面的指针,它通常用在iframe中嵌入其他页面的场景中。通过window.parent属性,子页面可以访问父页面的一些属性和方法,进而进行与父页面的通信或者操作。

// iframe子页面中获取父页面中的DOM元素
const parentElement = window.parent.document.getElementById('parent-element-id');

window.opener

window.opener是一个指向打开当前页面的那个窗口的指针,它通常用在打开新窗口的场景中。通过window.opener属性,新窗口可以访问打开它的窗口的一些属性和方法,进而实现跨窗口的通信或者操作。

例如,我们在打开一个新窗口的同时向它传递数据,可以通过如下方式:

在父窗口中的JavaScript代码:

function openChildWindow() {
  const childWindow = window.open('child.html', 'childWindow');
  childWindow.foo = 'bar';
}

在子窗口中的JavaScript代码:

const parentWindow = window.opener;
console.log(parentWindow.foo); // 输出"bar"

区别介绍

简单来说,window.parent是一个指向当前窗口的父级窗口的指针,而window.opener是一个指向打开当前窗口的父级窗口的指针。

具体来说,它们的区别如下:

  • window.parent可用于访问嵌套iframe中的父级窗口,而window.opener只能用于访问打开当前窗口的那个窗口;
  • window.parent属性是只读的,而window.opener属性是可读写的;
  • 当前窗口在未被打开的状态下,window.parent会返回当前窗口自身,而window.opener会返回null。

示例说明

示例1:通过window.parent实现跨iframe访问

父窗口HTML代码:

<iframe src="child.html" id="child-iframe"></iframe>

子窗口HTML代码:

<div id="message"></div>

父窗口JavaScript代码:

const childIframe = document.getElementById('child-iframe');
const messageElement = childIframe.contentWindow.document.getElementById('message');
messageElement.innerText = 'Hello World!';

在父窗口中,我们首先通过document.getElementById('child-iframe')获取到子窗口的iframe元素,然后通过contentWindow属性获取到子窗口的全局window对象,进而通过document.getElementById('message')找到子窗口中的消息元素,最后实现了跨iframe访问。

示例2:通过window.opener实现从子窗口向父窗口传递数据

父窗口HTML代码:

<button onclick="openChildWindow()">打开子窗口</button>

子窗口HTML代码:

父窗口JavaScript代码:

function openChildWindow() {
  const childWindow = window.open('child.html', 'childWindow');
  childWindow.foo = 'bar';
}

在父窗口中,我们通过window.open方法打开了一个子窗口,并且通过childWindow.foo = 'bar'传递了一个数据。在子窗口中,通过window.opener获取到父窗口的window对象,进而访问到在父窗口中传递过来的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:window.parent与window.openner区别介绍 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javascript判断一个变量是数组还是对象

    判断一个变量是数组还是对象是编写 JavaScript 程序中常见的任务,我们可以使用原生 JavaScript 提供的一些方法来实现这个功能。 方法一:使用 typeof 运算符和 Array.isArray() 方法 在 JavaScript 中,我们可以使用 typeof 运算符来检查一个变量的类型,Array.isArray() 方法用来判断一个变量…

    JavaScript 2023年5月27日
    00
  • javascript中动态函数用法实例分析

    JavaScript中动态函数用法实例分析 简介 动态函数是指在运行时动态创建的函数,在JavaScript中,我们可以通过函数构造器(Function Constructor)或者箭头函数来动态创建函数。这种方式可以很灵活地生成函数实例,可以灵活的控制函数的运行逻辑。在本篇文章中,我们将分析JavaScript中动态函数的用法,并给出一些实例代码。 使用函…

    JavaScript 2023年5月27日
    00
  • JavaScript SHA512&SHA256加密算法详解

    JavaScript SHA512&SHA256加密算法详解 简介 SHA(Secure Hash Algorithm,安全散列算法)是一类加密算法,主要用来确保数字签名的一致性以及文件的完整性。SHA算法最初由美国国家标准技术研究所(NIST)发布,目前SHA算法已经成为应用最广泛的数据加密方法之一。 SHA512是SHA家族中的一种类型,其输出为…

    JavaScript 2023年6月11日
    00
  • ES6模板字符串和标签模板的应用实例分析

    下面是关于 “ES6模板字符串和标签模板的应用实例分析” 的完整攻略。 ES6模板字符串 ES6模板字符串是一种新的字符串类型,用反引号 (`) 包裹字符串,可以使用 ${} 语法插入变量和表达式。它们也可以跨越多行而不需要添加额外的转义字符。 下面是一个示例,使用ES6模板字符串构建HTML模板: const name = ‘John’; const ag…

    JavaScript 2023年5月28日
    00
  • JS实现获取自定义属性data值的方法示例

    我来为你详细讲解一下 “JS实现获取自定义属性data值的方法示例”的攻略。 1. 什么是自定义属性data 自定义属性 data,是我们开发中经常用到的一种属性,可以用来存储一些自定义的数据,以达到一些自己想要的目的。比如,我们经常用这种方式来存放数据 ID,方便我们对元素的操作。 2. 如何获取自定义属性data值 我们可以通过JS中的 getAttri…

    JavaScript 2023年6月11日
    00
  • js验证电话号码与手机支持+86的正则表达式

    要验证电话号码与手机是否支持+86,我们需要使用正则表达式。 以下是一个通用的正则表达式,用于检查电话号码或手机号是否正确: /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/ 让我们详细分析这个正则表达式: ^表示字符串开头。 (表示一个捕获分组的开始。 0\d{2,3}-\d{7,8}匹配固定电话号码,其中0后面是2或3个数…

    JavaScript 2023年6月10日
    00
  • [翻译] JW Media Player 中文文档第4/4页

    首先需要说明的是,JW Media Player 是一款广泛使用的媒体播放器。其官方文档提供了详细的中文翻译,这里以第4/4页为例,为大家讲解如何将其翻译出来。 以下是完整的翻译攻略: 1. 下载原始文档 首先需要从官网上下载原始的英文文档,网址为:https://developer.jwplayer.com/jw-player/docs/developer…

    JavaScript 2023年6月11日
    00
  • 浅谈javascript中字符串String与数组Array

    浅谈JavaScript中字符串String与数组Array 1. 字符串String 字符串在JavaScript中表示一段文本,可以使用单引号 ‘ 或双引号 ” 包裹起来。例如: let str1 = ‘Hello, world!’; let str2 = "Hello, JavaScript!"; 1.1 字符串的属性和方法 1.1…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部