javascript - 检查窗口是否已经打开 window.open

标签 javascript html

我有一个 html 页面。在页面正文中,我正在调用 onload 事件,该事件调用 javascript 函数来打开一个弹出窗口。这是代码:

var newWindow = null;
function launchApplication()
{
    if ((newWindow == null) || (newWindow.closed))
    {
        newWindow = window.open('abc.html','','height=960px,width=940px');
    }
}

当我移动到另一个页面并再次返回该页面时,弹出窗口会重新打开,尽管它已经打开了。请指导我正确的方向,以便如果弹出窗口已经打开,则不应再次打开。我试过 document.referred 但它需要网站在线,目前我正在离线工作。

最佳答案

newWindow = window.open('abc.html','com_MyDomain_myWindowForThisPurpose','height=960px,width=940px');

为窗口命名。像这样以您的域为基础的名称,可以防止您选择其他人碰巧选择的名称。

永远不要编一个以_开头的名字,那些保留给浏览器以不同方式对待的特殊名称(与 anchor 元素的“目标”属性相同)。

请注意,如果使用不同的选项(例如不同的高度)打开该名称的窗口,那么它将保留这些选项。此处的选项只有在没有该名称的窗口时才会生效,因此您需要创建一个新窗口。

编辑:

请注意,“名称”是窗口的名称,而不是内容的名称。它不会影响标题( newWindow.document.title 会影响它,当然会在 abc.html 中编码)。它确实会影响其他跨窗口做事的尝试。因此另一个window.open具有相同名称的将重用此窗口。还有一个像 <a href="def.html" target="com_MyDomain_myWindowForThisPurpose">clicky!</a> 这样的链接将重新使用它。有关浏览器在各种情况下阻止窗口打开(弹出窗口阻止)的正常警告适用。

关于javascript - 检查窗口是否已经打开 window.open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12138236/

相关文章:

html - 调整浏览器大小或放大/缩小时的元素位置

javascript - Highcharts - 对 Angular 线 X/Y 轴

javascript - Joi 验证器替代模式错误消息

javascript - 使最宽的文本行适合 div 并更改第二行以匹配比率

javascript - Three.js 演示中无法通过触摸选择超链接

javascript - 如何设置文本区域中文本的格式或样式?

javascript - 当我一直收到 401 时,如何使用 header 删除 axios?

javascript - 在嵌套组件中响应访问状态

javascript - 如何只在移动设备上运行jquery代码?

html - 在 Div 管理方面需要帮助