window.parent与window.openner区别介绍

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日

相关文章

  • 代码生成器 document.write()

    代码生成器 document.write() 是一种 JavaScript 方法,可以在 HTML 文档中动态生成内容。在本文中,将详细讲解使用 document.write() 方法来生成 HTML 代码的完整攻略。 使用 document.write() 语法 document.write(HTMLcode) 参数 HTMLcode : 必需。要写入 H…

    JavaScript 2023年5月28日
    00
  • 常用JS加密编码算法代码第2/2页

    “常用JS加密编码算法代码第2/2页”是一篇介绍常用JS加密和编码算法的文章,其中包含了完整的代码示例。为了更好地理解和使用这些算法,可以按照以下步骤进行操作: 阅读文章,理解各种加密和编码算法的原理和用途。文章中提到了几种常用的算法,包括Base64编码、MD5加密、SHA1加密、AES加密等,在使用这些算法之前,需要先理解其基本原理。 下载代码示例,并在…

    JavaScript 2023年5月20日
    00
  • 使用Node.js为其他程序编写扩展的基本方法

    使用 Node.js 为其他程序编写扩展的基本方法需要按照以下步骤进行: 步骤一:安装 Node.js 和 NPM 首先需要在本地计算机中安装 Node.js 和 NPM(NPM 是 Node.js 的软件包管理器)。通常可以在 Node.js 的官方网站上下载相应的安装包进行安装。 步骤二:编写扩展代码 为其他程序编写扩展的方法有多种,其中最常用的方法是使…

    JavaScript 2023年5月19日
    00
  • 微信小程序 开发指南详解

    微信小程序开发指南详解 微信小程序是一种新型的移动应用程序,能够在微信里面直接运行,不需要额外的下载和安装,具有运行快速、使用方便等优点。本文将详细介绍微信小程序的开发流程,包括微信小程序的创建、开发工具的使用、页面和组件的开发、云开发等内容。 微信小程序的创建 微信小程序的创建需要先登录微信小程序开发者平台,如果没有账号需要先注册。登录后在开发者中心可以进…

    JavaScript 2023年5月27日
    00
  • JS产生随机数的用法小结

    JS产生随机数的用法小结 在JavaScript中,我们可以使用Math对象的random()方法来产生随机数。random()方法返回一个0到1之间(包括0但不包括1)的随机数。我们可以通过一些数学计算来获得我们需要的随机数。 产生一定范围内的随机整数 我们可以使用下面这个公式来产生一个在指定范围内的随机整数: Math.floor(Math.random…

    JavaScript 2023年5月28日
    00
  • 表单验证正则表达式实例代码详解

    《表单验证正则表达式实例代码详解》是一篇关于前端表单验证的教程,主要介绍了如何使用正则表达式进行表单验证。以下是本文的完整攻略。 一、表单验证正则表达式基础 1.1 正则表达式的概念 正则表达式是一种用来描述、匹配、搜索文本的方式。通过使用正则表达式,我们可以快速有效地验证用户输入的内容是否符合规则。 1.2 常用正则表达式语法 字符匹配:使用普通字符匹配具…

    JavaScript 2023年6月10日
    00
  • Webkit的跨域安全问题说明

    Webkit的跨域安全问题说明 Web应用程序中经常会有跨域请求的需求,但是跨域请求可能会涉及到安全风险,因此需要特殊的处理。 在Webkit浏览器中,跨域请求的安全机制较为严格。Webkit浏览器会对来自其他域的请求进行一系列的安全检查,包括Same origin policy、CORS等措施。下面我们详细讲解一下Webkit的跨域安全问题。 Same o…

    JavaScript 2023年5月27日
    00
  • JavaScript获取时区实现过程解析

    当我们需要获取时区信息时,JavaScript提供了一些内建方法和对象可以帮助我们快速获取本地和UTC时间之间的差异。本文将详细讲解JavaScript获取时区的实现过程和示例。 获取本地时区 我们可以使用Date对象的getTimezoneOffset()方法获取当前本地时间与UTC时间的差值(单位为分钟)。因为我们知道UTC时间偏移值已知,因此我们可以通…

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