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日

相关文章

  • JavaScript实现维吉尼亚(Vigenere)密码算法实例

    下面我将详细讲解“JavaScript实现维吉尼亚(Vigenere)密码算法实例”的完整攻略。 什么是维吉尼亚(Vigenere)密码算法? 维吉尼亚(Vigenere)密码算法是一种多表密码算法,它是基于一个关键字与明文的组合形成密文的算法。这种密码算法最早由法国密码学家布拉泽尔(Blaise de Vigenere)于16世纪提出。 维吉尼亚密码算法的…

    JavaScript 2023年5月19日
    00
  • input框中的name和id的区别

    当我们使用HTML表单时,为了方便后台处理表单输入数据,需要为表单中的input组件指定name属性值。同时,在页面的CSS和JavaScript中,也需要为input组件指定id属性值,以方便通过DOM操作网页元素。 name属性 作用 name属性指定表单字段的名称,该属性值会被提交到后端服务器用于请求参数的获取。 示例 <form method=…

    JavaScript 2023年6月10日
    00
  • JavaScript创建防篡改对象的方法分析

    JavaScript创建防篡改对象的方法分析 概述 在 JavaScript 中,对象的属性是可以被动态的添加和删除的,这也就为代码注入与篡改的攻击提供了空间。因此,我们需要一些手段来保护对象不受任意修改,这就是防篡改对象。 防篡改对象即不能被修改的对象,其中包含两种类型的属性: 可写属性:这类属性可以被修改。 不可写(读)属性:这类属性不能被修改。 在本篇…

    JavaScript 2023年5月28日
    00
  • JavaScript splice()方法详解

    JavaScript splice()方法详解 简介 JavaScript中的splice()方法是用于修改数组的方法之一。可以用它来添加、删除或替换数组的元素。splice()方法允许您使用起始索引和结束索引来确定要操作的一系列元素。 splice()方法的语法如下: array.splice(start, deleteCount, item1, item…

    JavaScript 2023年5月18日
    00
  • JavaScript生成带有缩进的表格代码

    当我们需要在网页上展示表格数据时,生成带有缩进的表格代码可以使代码结构更加清晰、易于阅读。下面是生成带有缩进的表格代码的步骤: 1. 准备数据 首先需要准备数据,可以是从后台服务器获取到的数据,也可以是通过JS数组手动创建的数据。例如,下面是一个JS数组: // 示例数据 var data = [ { name: ‘张三’, age: 28, address…

    JavaScript 2023年6月11日
    00
  • 使用Vuex解决Vue中的身份验证问题

    使用Vuex解决Vue中的身份验证问题需要以下步骤: 1. 创建Vuex Store 定义一个Vuex store,该store中包含用户相关的数据,如用户是否已登录、用户名等。其中,用户是否已登录是用来判断用户登录状态的重要标志。 import Vue from `vue` import Vuex from `vuex` Vue.use(Vuex) con…

    JavaScript 2023年6月11日
    00
  • JavaScript数组去重和扁平化函数介绍

    当涉及到JavaScript数组时,我们经常需要对元素进行去重和扁平化处理。在这篇攻略中,我们将介绍如何使用JavaScript编写去重和扁平化数组的函数。 JavaScript数组去重 方法一:使用ES6 Set ES6 Set是一组不重复的值的集合。它提供了一个很方便的方法来过滤掉数组中的重复元素。 以下是示例代码: const arr = [1, 1,…

    JavaScript 2023年5月27日
    00
  • Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器

    Easy.Ajax 是一款基于 jQuery 库的 Ajax 库,用于简化 Ajax 的操作流程。其中,Easy.Ajax 部分源代码支持文件上传功能,同时兼容各大主流浏览器。下面将详细讲解该功能的使用方法。 首先,需要在页面中引入必要的文件及库: <!– 引入 jQuery 库 –> <script src="https:/…

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