使用Javascript从父onblur关闭子窗口
Close Child Window from Parent onblur using Javascript
我有一段代码,它在弹出窗口(子窗口)中返回一些其他页面(谷歌)。我不能在子窗口中编写任何代码,所以我必须从父窗口完成所有操作。我正在尝试将onblur事件从父窗口绑定到子窗口,以便在子窗口失去焦点后关闭它。然而,儿童窗口会飞溅一微秒,然后自动关闭。
我不能在我工作的环境中使用jQuery。
这是我的示例代码:
<html>
<head>
</head>
<body>
<input type="button" value="Open Google" onclick="OpenWindow()" />
<script type="text/javascript">
function OpenWindow()
{
var url="http://www.google.com";
var newWin=window.open(url, 'Popup','height=500,width=600,left=100,top=100,resizable=yes,scrollbars=no,toolbar=no,status=no');
newWin.focus();
newWin.onblur = newWin.close();
}
</script>
</body>
</html>
跳过.close()
后面的括号
newWin.onblur = newWin.close;
您希望传递一个函数引用,而不希望分配通过执行.close()
返回的值。
另一个答案如下:
function open_popup() {
var my_window = window.open("", 'targetWindow', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=750px,height=500px');
var html = '';
html = "Muhammad Shoaib Qureshi's New Window Text";
my_window.document.write(html);
my_window.focus();
my_window.onblur = function() {
my_window.close();
};
}
除了上面的这个,没有其他解决方案对我有效。
谨致问候,Shoaib。
我得到了解决方案。
使用"window.top.close();"
上述解决方案将不再适用于跨源域,可能会引发此错误Blocked a frame with origin "https://example.com" from accessing a cross-origin frame.
为了解决这个问题,我们可以向父窗口添加一个事件侦听器,并侦听focus
事件,这应该在用户从派生的子窗口单击回主窗口后触发,然后我们可以关闭框架。
let url = "https://example.com";
let frame = window.open(url, "Popup", "height=500,width=600,left=100,top=100,resizable=yes,scrollbars=no,toolbar=no,status=no");
window.addEventListener('focus', (e) => {
if (!frame.closed) frame.close()
})
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 防止Iframe窗体在新窗口中打开
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- Javascript排序的图像弹出窗口..可以't单独弹出
- 窗口大小html css
- 弹出窗口出现,然后退出
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript更新孙窗口中的表单元素
- 如何在选项卡上定义属性'的主窗口对象
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 召回窗口加载事件 - javascript
- 为什么不显示警报窗口
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- Chrome应用程序调整窗口大小保持纵横比
- 新选项卡被弹出窗口阻止程序阻止
- 使用Javascript从父onblur关闭子窗口
- 我有一个用于 onclick 的窗口加载函数 如何添加 onblur 事件并合并为一个
- 当运行硒测试时,当火狐窗口不在焦点上时,Onblur 事件触发会变得混乱
- 检测 Firefox、IE 和 Chrome 中的窗口 onblur() 事件