Counter Strike 1.6 MOTD文件中GIF窗口无法自动关闭的求助
CS 1.6 MOTD 弹窗自动关闭失效问题求助
我在编写Counter Strike 1.6的MOTD(每日消息)文件时碰到个问题:
- 需求是点击链接后在新窗口打开GIF,目前弹窗能正常打开、GIF可以播放,手动关闭也没问题,但超时自动关闭的功能在CS环境下完全失效
- 同样的脚本在普通浏览器里能正常触发自动关闭,只有在CS的内置浏览器里不行
原代码如下:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> function closeWindow(gifWindow){ if (gifWindow) { gifWindow.close(); } } function openGifWindow() { var gifWindow = window.open("video.gif", "GifWindow", "width=400,height=400"); setTimeout(function() { closeWindow(gifWindow); }, 1000); } </script> </head> <body> <a href="#" onclick="openGifWindow(); return false;">Открыть гифку</a> </body> </html>
解决思路及修改方案
CS 1.6的内置浏览器基于老旧的IE内核,对跨页面的窗口对象操作有严格的权限限制——父页面的setTimeout回调里根本拿不到子窗口的控制权,自然没法触发关闭。
换个思路,把自动关闭的逻辑放到弹窗自身的页面里,让弹窗自己控制关闭:
- 新建一个单独的GIF展示页面(命名为
gif_page.html):
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <script> // 弹窗自身启动定时器,到点自动关闭 setTimeout(() => window.close(), 1000); </script> </head> <body style="margin: 0; padding: 0;"> <img src="video.gif" style="width: 100%; height: 100%;" /> </body> </html>
- 修改原MOTD页面的代码,让它打开这个新页面而不是直接打开GIF:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> function openGifWindow() { window.open("gif_page.html", "GifWindow", "width=400,height=400"); } </script> </head> <body> <a href="#" onclick="openGifWindow(); return false;">Открыть гифку</a> </body> </html>
这样修改后,弹窗的关闭逻辑由自身触发,避开了CS内置浏览器的跨页面权限限制,应该就能正常实现自动关闭了。
内容的提问来源于stack exchange,提问作者ergeeeco
相关产品推荐
相关产品推荐

