用javascript父窗口控制只弹出一个子窗口

要实现父窗口控制只弹出一个子窗口,需要满足以下几个步骤:

  1. 在父窗口中定义一个全局变量,用于保存打开的子窗口对象。

  2. 在打开子窗口的函数中,先判断全局变量是否为空。如果为空,说明没有打开过子窗口,那么创建新的子窗口对象并赋值给全局变量。如果不为空,说明已经存在子窗口,那么判断子窗口是否关闭,如果关闭,则再次创建新的子窗口对象并赋值给全局变量;如果没有关闭,则聚焦在已存在的子窗口上。

  3. 在子窗口关闭时,将全局变量的值置为空。

下面是两个示例说明:

  1. 在父窗口点击按钮弹出子窗口

父窗口代码:

<script>
var childWindow = null;

function openChildWindow(url) {
  if (childWindow && !childWindow.closed) {
    childWindow.focus();
  } else {
    childWindow = window.open(url, "childWindow");
  }
}

function closeChildWindow() {
  if (childWindow && !childWindow.closed) {
    childWindow.close();
    childWindow = null;
  }
}
</script>

<button onclick="openChildWindow('https://www.example.com')">打开子窗口</button>
<button onclick="closeChildWindow()">关闭子窗口</button>

子窗口代码:

<script>
window.onunload = function() {
  window.opener.childWindow = null;
}
</script>
  1. 在子窗口点击链接打开新的子窗口

父窗口代码:

<script>
var childWindow = null;

function openChildWindow(url) {
  if (childWindow && !childWindow.closed) {
    childWindow.focus();
  } else {
    childWindow = window.open(url, "childWindow");
  }
}

function closeChildWindow() {
  if (childWindow && !childWindow.closed) {
    childWindow.close();
    childWindow = null;
  }
}
</script>

<button onclick="openChildWindow('https://www.example.com')">打开子窗口</button>
<button onclick="closeChildWindow()">关闭子窗口</button>

子窗口代码:

<script>
window.onunload = function() {
  if (opener && opener.childWindow && !opener.childWindow.closed) {
    opener.childWindow.close();
  }
}
</script>

<a href="https://www.example.com" target="_blank" onclick="window.open(this.href, 'childWindow'); return false;">点击打开新的子窗口</a>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用javascript父窗口控制只弹出一个子窗口 - Python技术站

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

相关文章

  • JavaScript Window 打开新窗口(window.location.href、window.open、window.showModalDialog)

    JavaScript Window 打开新窗口 有3种常用的JavaScript方法可以打开一个新窗口,它们分别是window.location.href、window.open和window.showModalDialog。接下来,我们将详细讲解它们的使用方法和区别。 window.location.href window.location.href 可以…

    JavaScript 2023年6月11日
    00
  • JavaScript从数组的indexOf()深入之Object的Property机制

    JavaScript从数组的indexOf()深入之Object的Property机制攻略 什么是Property机制 在JavaScript中,Object是一种特殊的数据类型,它使用了一种被称为Property的机制来存储和访问数据。每个Object都有一组Property,每个Property包括一个名称和一个值。值可以是任何类型的JavaScript…

    JavaScript 2023年5月28日
    00
  • Javascript Date setUTCMonth() 方法

    以下是关于JavaScript Date对象的setUTCMonth()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setUTCMonth()方法 JavaScript的setUTCMonth()方法设置对象UTC月份部分。方法接受一个整数,表示要设置的UTC月份如果该参数超出了JavaScript所能表示的范围,则自动调整为相应…

    JavaScript 2023年5月11日
    00
  • js数组去重的11种方法

    下面是详细讲解“js数组去重的11种方法”的完整攻略。 引言 在JavaScript开发中,常常需要我们对数组进行去重的操作。由于JavaScript本身没有提供去重的方法,开发者需要结合一些技巧和方法来完成这个任务。本文将由浅入深介绍11种JavaScript数组去重的方法,希望对大家有所帮助。 方式一:使用Set类型 Set是一种新的ES6数据类型,它存…

    JavaScript 2023年5月27日
    00
  • JavaScript对象参数的引用传递

    JavaScript中对象作为参数时是引用传递,这意味着在函数中操作传递进来的对象参数时,会直接修改原对象,而不是复制一份进行操作。下面是完整的攻略。 什么是引用传递? 引用传递是JavaScript中一种复杂数据类型(如对象、数组等)作为函数参数时的传递方式。传递的不是数据本身,而是对该数据的内存地址的引用。在函数内部可以通过这个地址对传递进来的数据进行修…

    JavaScript 2023年6月10日
    00
  • 浅谈javascript中的加减时间

    浅谈JavaScript中的加减时间 在JavaScript中,可以通过一些内置的方法来对时间进行加减操作,本篇文章将讲解如何使用这些方法来实现时间的加减。 使用Date对象进行时间的加减 Date对象是JavaScript中表示时间的标准对象。它提供了多种方法来对时间进行加减操作。 加时间 通过调用Date对象的set方法,在原有时间的基础上添加一定的时间…

    JavaScript 2023年5月27日
    00
  • 微信小程序用户授权获取手机号(getPhoneNumber)

    当需要获取微信小程序用户的手机号时,我们需要先进行用户授权,具体步骤如下: 在小程序中使用 button 组件,设置属性 open-type=”getPhoneNumber”,代码如下: <button open-type="getPhoneNumber" bindgetphonenumber="onGetPhoneNum…

    JavaScript 2023年6月10日
    00
  • ajax动态加载json数据并详细解析

    让我来给大家详细讲解一下“ajax动态加载json数据并详细解析”的完整攻略。 第一步:准备工作 在开始实现“ajax动态加载json数据并详细解析”之前,我们需要做一些准备工作。 首先,我们需要一份json数据作为我们的示例数据。这份数据可以自己手动编写,也可以从一些开放的api接口中获取到。这里,我们以豆瓣Top250电影的api接口为例,获取到如下数据…

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