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日

相关文章

  • 在Spring Boot中如何使用Cookies详析

    在Spring Boot中,使用Cookie的方法非常简单,只需要使用HttpServletRequest和HttpServletResponse对象即可实现。下面我们来详细讲解如何使用Cookies。 一、什么是Cookies? Cookie是存储在客户端浏览器上的数据,它可以记录用户在访问网站时的一些信息,比如用户的登录状态、购物车中的商品等信息。Coo…

    JavaScript 2023年6月11日
    00
  • JavaScript实现计算器的四则运算功能

    实现计算器的四则运算功能,需要掌握一些基本的JavaScript语法。下面是实现计算器的步骤攻略: 1. HTML页面的结构设计 首先需要创建HTML结构,也就是计算器的页面UI布局,建议使用最基础的HTML结构,不使用框架,以便更好的理解JavaScript的实现过程。其中最重要的是操作符和数字按钮,结果展示部分和清除按钮。 示例代码如下: <!DO…

    JavaScript 2023年5月28日
    00
  • JS简单生成两个数字之间随机数的方法

    生成两个数字之间的随机数在开发中是很常见的需求,下面我将为大家提供 JS 简单生成两个数字之间随机数的攻略: 使用 Math.random() 方法 Math.random() 方法返回一个介于 0 到 1 之间的随机数。我们可以使用该方法生成两个数字之间的随机数。 在获取到随机数后,我们可以将其范围转换为两个数字之间的随机数,例如要生成 1 到 100 之…

    JavaScript 2023年5月28日
    00
  • javascript json对象小技巧之键名作为变量用法分析

    本文将详细讲解”javascript json对象小技巧之键名作为变量用法”,该技巧可以提高代码的灵活性和可读性。 什么是json对象? JSON是一种轻量级的数据交换格式,JS中的JSON对象是Javascript原生支持的一种格式化的数据类型,它可以用来传递和存储简单的结构化数据。 JSON 常用于与服务端交换数据。 通常我们获取的json对象会有多个键…

    JavaScript 2023年5月27日
    00
  • 15个顶级开源JavaScript框架和库

    下面给您详细讲解关于“15个顶级开源JavaScript框架和库”的攻略。 1. 什么是JavaScript框架和库 JavaScript框架和库是用于JavaScript语言的代码集合,它们能够帮助开发者更便捷地构建应用程序。它们的目的是减少开发者的工作量、提高开发效率和代码可读性。 2. 常用的JavaScript框架和库种类 目前常用的JavaScri…

    JavaScript 2023年5月18日
    00
  • 编写高质量JavaScript代码的基本要点

    编写高质量JavaScript代码的基本要点有以下几点: 1. 规范代码格式 良好的代码格式不仅可以使代码更容易阅读和理解,还可以提高代码的可维护性和可重用性。为此,我们需要遵循一些规范,如: 使用一致的缩进方式和空格或制表符 使用行末注释而不是行内注释 使用严格模式,避免使用全局变量 具有良好的代码结构,如按功能或逻辑分组功能块 以下是一个示例代码块,展示…

    JavaScript 2023年5月18日
    00
  • nicedit 轻量级编辑器 使用心得

    Nicedit 轻量级编辑器使用心得 Nicedit是一款轻量级的富文本编辑器,它使用简单,易于集成在任何项目中。在本篇文章中,我们将深入探讨Nicedit的使用,包括基本使用、自定义设置和集成到网站中的过程。 基本使用 Nicedit的基本使用非常容易,只需要在HTML文件中引入相关的JS和CSS文件,然后在页面中添加一个div元素作为编辑器即可: &lt…

    JavaScript 2023年6月10日
    00
  • Javascript基础教程之数据类型 (字符串 String)

    Javascript基础教程之数据类型(字符串 String) 什么是字符串? 在JavaScript中,字符串是由任何字符组成的一组字符。字符串可以是字母、数字、标点符号等,甚至可以包含空格或其他特殊字符。字符串是JavaScript中最常用的数据类型之一。 JavaScript中的字符串是Unicode字符集中的16位编码单元序列。这意味着每个字符都是由…

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