javascript - 弹出窗口 JavaScript
问题描述
我一直在使用 JavaScript 弹出窗口,当我触发它们打开时,这些窗口没有保存为变量
这是我的代码
function trig(){var pwin = window.open('https://stackoverflow.com/questions/68612238/popup-window-javascript','popUpWindow','height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,status=yes');document.querySelector('body').setAttribute('onclick', 'pwin.close()')};
<div onclick="trig()">Click here</div>
这是一个外部链接,在单击“单击此处”按钮后尝试它
应该显示一个窗口,但我发现它没有将其保存为变量。然后在用户按下<body>
元素后,窗口应该关闭
无法调试任何问题。
解决方案
pwin
未在全局范围内声明。您应该改为close()
在函数内部调用该方法。
function trig() {
var pwin = window.open('https://stackoverflow.com/questions/68612238/popup-window-javascript', 'popUpWindow', 'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,status=yes');
document.querySelector('body').addEventListener('click', () => pwin.close());
};
它立即关闭,因为当您单击“单击此处”按钮打开窗口时,在事件完成触发click
之前添加了事件侦听器click
,因此它立即关闭。
相反,使用setTimeout
在 50 毫秒后添加事件侦听器:
function trig() {
var pwin = window.open('https://stackoverflow.com/questions/68612238/popup-window-javascript', 'popUpWindow', 'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,status=yes');
setTimeout(()=>{document.querySelector('body').addEventListener('click', () => pwin.close());}, 50);
};
推荐阅读
- python - 如果 2020 年日期的预订价值小于 25,则将其替换为去年 7 天的熊猫平均价值
- typescript - 为什么构造函数不能被键入为具有静态成员的可调用对象,或者它只是打字稿限制,是否有正当理由?
- python - 在 Python 上使用 GTFS 获取中转时间
- python - 使用opencv python从移动相机(无人机)拍摄的视频中提取移动对象
- pyspark - 除非在 mmlspark 中使用 lgbm 模型的数据块中使用 repartition(1),否则大预测结果
- python - 如何使用迁移的 Django 模型将“没有时区的时间戳”更改为“有时区的时间戳”?
- python - 缺少 Python 构造函数属性
- javascript - 使用 fetch 方法从 AWS S3 下载文件会引发 CORS 错误
- php - 告诉 Laravel 在 X 秒后停止尝试连接
- java - 无法在 Mac OS Big Sur 上打开 Eclipse