用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中使用exec进行正则表达式全局匹配时的注意事项

    在JavaScript中,exec()方法是用于在字符串中执行一个正则表达式搜索的方法,它返回一个包含查找结果的数组。而对于全局匹配,exec() 方法可以在同一个字符串中多次运行来查找所有匹配,但是这也涉及到一些注意事项。 注意事项 必须使用while循环或递归来遍历所有匹配 在使用exec()方法时,需要使用while循环或递归来遍历所有匹配。每次调用e…

    JavaScript 2023年6月10日
    00
  • ES6模板字符串和标签模板的应用实例分析

    下面是关于 “ES6模板字符串和标签模板的应用实例分析” 的完整攻略。 ES6模板字符串 ES6模板字符串是一种新的字符串类型,用反引号 (`) 包裹字符串,可以使用 ${} 语法插入变量和表达式。它们也可以跨越多行而不需要添加额外的转义字符。 下面是一个示例,使用ES6模板字符串构建HTML模板: const name = ‘John’; const ag…

    JavaScript 2023年5月28日
    00
  • JavaScript中Cookie的使用之如何设置失效时间

    设置Cookie的失效时间是JavaScript中Cookie使用的重要方面之一。下面是一些设置Cookie失效时间的步骤和示例说明。 1. 设置Cookie失效时间的方法 在JavaScript中,可以通过设置Cookie的expires属性来设置Cookie的失效时间。expires属性可以是一个日期对象或一个表示Cookie失效时间的字符串。 1.1 …

    JavaScript 2023年6月11日
    00
  • JavaScript encodeURI 和encodeURIComponent

    JavaScript提供了两个用于URL编码的方法:encodeURI()和encodeURIComponent()。 encodeURI() encodeURI()方法用于将整个URL编码,包括特殊字符,但不包括以下字符:/、?、&、=和#。编码后的字符是%xx,其中xx是字符的ASCII十六进制值。 下面是一个使用encodeURI()的示例: …

    JavaScript 2023年5月19日
    00
  • 15位和18位身份证JS校验的简单实例

    下面我将为你详细讲解如何实现“15位和18位身份证JS校验的简单实例”。 校验15位和18位身份证简单实例 1. 判断身份证长度 在对身份证进行校验之前,需要先判断身份证长度是否合法。根据规定,15位身份证和18位身份证长度分别是15和18位。具体实现代码如下所示: function checkIdCard(idCard) { // 判断身份证长度 if (…

    JavaScript 2023年6月10日
    00
  • javascript操作元素的常见方法小结

    下面就是”javascript操作元素的常见方法小结”的完整攻略: JavaScript操作元素的常见方法小结 在JavaScript中,我们经常需要通过某个元素的id/class名字获取到该元素,然后进行一些操作,比如修改其文本内容、改变其样式等等。那么,JavaScript中有哪些常见的操作元素的方法呢? 1. 通过id获取元素 在HTML中,每个元素都…

    JavaScript 2023年6月10日
    00
  • 实用的Javascript调试技巧整理

    实用的Javascript调试技巧整理 在开发过程中,Javascript调试技巧是非常重要的一部分。好的调试技巧能够极大提升开发的效率,排除隐藏的bug。本文将介绍一些实用的Javascript调试技巧,它们可以帮助你快速找到问题并解决它们。 1. 使用console调试 使用console输出变量、对象和函数的细节是最基本和最常用的调试技巧之一。cons…

    JavaScript 2023年5月27日
    00
  • JS实现浏览上传文件的代码

    JS实现浏览上传文件的代码需要使用到HTML的input标签和JavaScript的FileReader API,下面为你详细讲解实现步骤: HTML部分 首先需要在HTML中创建一个input标签,设置type属性值为file,添加一个change事件监听器,如下所示: <input type="file" id="in…

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