“我知道最近没怎么更新,但放心,我没忘了大家有多爱看互联网上那些蠢到不行的点子。”一位开发者在自己最新的实验项目介绍里这么开场——他提到的项目,是用整整576个浏览器弹窗,跑起了一局贪吃蛇游戏。光看截图,密密麻麻的窗口堆满屏幕,每个窗口各自显示一截蛇身或一粒食物,刷新起来足够让任何一台电脑风扇狂转。
这个点子的起点,起源于他和同事一次关于浏览器窗口控制的随意聊天。“你知道可以从一个浏览器窗口控制另一个窗口吧?”同事的一句话,本来是为了解决一个正经需求——检查外链是否能正常跳转,同时绕开iFrame被某些网站屏蔽的麻烦。但开发者转念一想:既然能跨窗口控制,那为什么要止步于两个窗口?
![]()
“这引出了一个可怕的主意。”他写道。浏览器允许在用户主动交互且授权允许弹窗后,对窗口进行大量操作:能指定窗口的大小(尽管有最小尺寸限制)、位置,还能给窗口命名,以便在代码里随时引用它。只要把位置和尺寸这两个变量玩起来,就能让多个窗口按照指令在屏幕上反复移动——于是,把贪吃蛇的每一节身体和每一粒食物,都分给一个独立的浏览器窗口,在技术上就变成能跑通的事。
实际操作起来,限制和体验同样直白:方向键控制蛇移动;点击“开始游戏”后,浏览器地址栏会弹出弹窗请求,必须选择“始终允许此站点显示弹窗”才能继续;全程不能点击任何东西,只能靠键盘方向键操作。这个实验只在他自己的Chrome加Windows环境里测过,其他浏览器或操作系统能不能跑,得看运气。游戏结束后,还得记得按下高分窗口里的“清除所有窗口”按钮,不然桌面会被乱七八糟的弹窗淹没,“你得坐在那儿花好半天一个个关”。
不过,这套玩得“辣眼睛”的操作背后,藏着一些实实在在的应用可能。开发者顺带提了自己的工作场景:他们需要检查第三方网站上的链接是否失效。但难题在于,有些网站是单页应用,哪怕页面已经不存在了,HTTP响应头仍然返回200状态码;还有些内容躲在登录墙后面,能确认页面存在,却根本不知道墙后面的正文还在不在。
他们的解法,正是利用窗口控制能力,而不是iFrame。做法很简单:同时打开两个窗口,左边放一个稍小的窗口,用来陈列待检查的页面链接列表;右边放主工作区窗口。只要在左边点击某个链接项,右边的窗口就会自动跳转到对应网址——完全没有iFrame被屏蔽的烦恼。而且两个窗口还能按需调整尺寸,把屏幕填满左右分屏。
这个思路跳开了iFrame的两大软肋:一是某些网站会主动禁止自己被嵌入iFrame;二是嵌在iFrame里的页面,一旦涉及登录态或复杂交互,处理起来格外麻烦。换成两个独立窗口之后,每个窗口都拥有完整的浏览器上下文,登录、渲染、跳出验证、单页应用路由变化,统统按原生浏览器行为进行,状态也更干净。
从结果来看,一场576个弹窗齐飞的贪吃蛇游戏,和一套能提升链接检查效率的窗口分屏工具,底层的技术能力完全一致——跨窗口消息传递与控制。只是前者把“能行”推到极端,让任何看到截图的人都忍不住想截图、报分和吐槽,而后者把同样的能力收束到了一个能落地的效率场景里。两项作品同时摆在眼前,也算是给所有做前端工具的人提了个醒:有时候,浏览器本身的能力边界,比想象中要宽得多。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.