用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日

相关文章

  • BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑

    Bootstrap是一款常用的前端开发框架,封装了很多常用的功能组件,如表单验证功能。但是在使用Bootstrap的表单验证组件时,我们可能会遭遇一些坑,其中比较典型的就是非Submit类型按钮点击时不能触发表单验证的问题。 下面是解决这个问题的攻略步骤: 步骤1:为非Submit类型按钮添加点击事件 首先,我们需要为非Submit类型按钮添加点击事件。在这…

    JavaScript 2023年6月10日
    00
  • JavaScript 拖放效果代码

    下面我会详细讲解“JavaScript 拖放效果代码”的完整攻略,包括整体思路和具体实现方法,同时会提供两个示例说明。 整体思路 JavaScript 拖放效果代码的实现需要遵循以下几个步骤: 获取拖拽源和拖拽目标元素; 为拖拽源元素绑定 mousedown 事件,并在该事件中记录鼠标按下时的位置信息; 为拖拽源元素绑定 mousemove 事件,该事件会在…

    JavaScript 2023年6月10日
    00
  • 使用 JavaScript 进行函数式编程 (一) 翻译

    我来为您详细讲解“使用 JavaScript 进行函数式编程 (一) 翻译”的完整攻略。 标题 使用 JavaScript 进行函数式编程 (一) 翻译 简介 函数式编程(Functional Programming)是一种在编程语言中处理函数的方法。JavaScript 作为一种多范式语言,也支持函数式编程。本文将带您了解 JavaScript 中的函数式…

    JavaScript 2023年5月18日
    00
  • JSON 数据格式详解

    JSON 数据格式详解 在现代 Web 开发中,数据交换是至关重要的一部分。而 JSON (JavaScript Object Notation) 已被广泛用于此。本文将详细介绍 JSON 的格式以及如何使用它进行数据交换。 什么是 JSON JSON 是一种文本格式,它是由 JavaScript 对象表示法衍生而来。JSON 是轻量级的数据交换格式,易于阅…

    JavaScript 2023年5月27日
    00
  • JQuery 动态扩展对象之另类视角

    JQuery 动态扩展对象之另类视角 在 Javascript 中,对象是一种灵活的数据类型,可以随意添加、删除、修改属性。JQuery 作为一个基于 Javascript 的库,提供了很多方便的方法和 API,其中一个非常常用的功能就是动态扩展对象。这篇文章将介绍 JQuery 中动态扩展对象的另一种视角,希望对初学者来说有所帮助。 对象的动态扩展 在 J…

    JavaScript 2023年6月10日
    00
  • 关于javascript event flow 的一个bug详解

    关于 “关于javascript event flow 的一个bug详解” 的攻略,我会详细介绍以下内容: 什么是 JavaScript 事件流 什么是事件捕获和事件冒泡 JavaScript 事件流的 bug 如何解决 JavaScript 事件流的 bug 首先,我们需要了解什么是 JavaScript 事件流。 JavaScript 事件流 JavaS…

    JavaScript 2023年6月11日
    00
  • JavaScript基于inquirer封装一个控制台文件选择器

    下面我将详细讲解“JavaScript基于inquirer封装一个控制台文件选择器”的完整攻略。 简介 inquirer是一个流行的交互式命令行工具,它提供了很多强大的功能,包括询问用户输入、选择等功能。我们可以使用inquirer等库将一个控制台文件选择器封装起来,在命令行中方便用户选择文件。 步骤 下面是基于inquirer封装控制台文件选择器的完整步骤…

    JavaScript 2023年5月27日
    00
  • js判断登陆用户名及密码是否为空的简单实例

    下面我将为您详细讲解“js判断登陆用户名及密码是否为空的简单实例”的完整攻略。 前置知识 在实现本例中,需要您掌握以下基础知识: HTML基础语法 JavaScript基础语法 表单基本操作 实现步骤 1. 创建表单 首先,我们需要在HTML代码中创建一个表单,用于用户输入用户名和密码: <form id="login-form"&…

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