当前位置:首页 > 休闲

html恶搞代码

去年愚人节,恶搞我把一段代码发给了室友。代码他点开链接,恶搞浏览器卡了三秒,代码然后满屏都是恶搞旋转的“你是猪”表情包,关不掉,代码Alt+F4也没用。恶搞最后他拔了电源。代码

那段代码的恶搞核心就一行:

<marquee><h1>你是猪</h1></marquee>

配合一个无限循环的alert(),效果拉满。代码这就是恶搞HTML恶搞的原始魅力——不需要多高深的技术,抓住浏览器几个“特性”,代码就能让人抓狂。恶搞

那些年被玩坏的代码标签

<marquee>是个神奇的存在。它从来没被W3C正式承认过,恶搞但所有主流浏览器都默默支持。文字从右往左滚,加上direction="up"还能往上飘。你把它和<blink>叠在一起——文字一边闪一边滚,视觉污染直接封顶。这俩标签现在基本被废弃了,但写出来照样能跑。浏览器厂商大概觉得,留着它们也出不了什么大事。

真正的大事出在<body onload>上。有人写过一个页面,加载时触发window.open(),弹出一个新窗口,新窗口里再弹一个,子子孙孙无穷匮也。用户只能看着任务栏被塞满,一个一个手动关。这招在IE6时代堪称核武器,现在浏览器会拦截弹窗,但换个思路——用setInterval每500毫秒改一次document.title,标题栏就开始疯狂闪烁:“快关掉我快关掉我快关掉我”。关不掉,因为页面本身没卡死,你只是找不到关闭按钮在哪——它被一个position: fixed的透明层盖住了。

CSS也能整人

有个经典恶作剧:把鼠标指针换成一张1×1像素的透明图片。cursor: url('transparent.png'), auto;。用户以为鼠标丢了,疯狂晃鼠标,其实指针就在那儿,只是看不见。配合transform: rotate(180deg)把整个页面倒过来,再给body加个animation让背景色以0.1秒为周期在红蓝之间切换——三秒之内,再冷静的人也会想砸键盘。

更损的是用CSS做“假死”。body { display: none; },页面一片空白。用户以为网断了,刷新,还是白。其实代码在<noscript>里藏了提示:“JavaScript已禁用”——但用户根本没禁用JS,只是被CSS骗了。这种恶作剧的伤害性不大,侮辱性极强。

别玩过火

我见过一个真事。有人把<input>的type设成password,但用CSS把字符显示出来——用户以为自己在输密码,其实旁边的人看得一清二楚。这不叫恶搞,这叫缺德。还有个更危险的:用history.pushState疯狂往浏览历史里塞记录,用户按后退键永远退不出这个页面。手机浏览器上,这招能让返回手势失效,只能杀进程。

HTML恶搞的边界在哪?我觉得很简单:对方笑出来之后能自己关掉页面,就是玩笑;对方关不掉或者关了之后还得重装系统,就是攻击。<marquee>是玩笑,无限弹窗是攻击。中间那条线,写代码的人心里得有数。

最后说个冷知识。<marquee>其实支持behavior="alternate",文字会像乒乓球一样来回弹。你把它和<h1>叠十层,每层速度不一样,屏幕上就是一场文字雪崩。我试过,室友看完说了一句话:“你今晚别想用我热点。”

值了。

分享到: