VeryFTP广告

本文介绍了一种利用 cookie 来记录用户是否已观看 VeryFTP 广告的方法,并详细描述了如何根据不同情况展示全屏广告或右下角小广告的技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次做的VeryFTP的广告采用cookie在客户端保存用户是否看过广告,如果没有看过(第一次访问)则以全屏的方式呈现一个广告;对于看过的用户,则是在右下角飘出一个并不令太人厌恶的小框(不管怎么说,它都是广告)。

首先写setCookie函数,它的功能是存储cookie,有效时间设置为30天。通常说到cookie的时间会有两种选择,一种是max-age,一种是expires,前者以秒来计算,但是为“非持久”cookie,即随浏览器进程的结束而失效,后者以日期来计算,属于“持久”cookie。我们选择后者,初始化一个Date对象,通过setMonth方法将它的月份加一。用以下语句写入cookie:

document.cookie = "VeryFTPNoticement = flase; expires=" + expDate.toGMTString();


然后是getCookie函数。用正则匹配cookie中“VeryFTPNoticement”这个字符串,如下:

var arr = document.cookie.match(new RegExp("(^| )"+"VeryFTPNoticement"+"=([^;]*)(;|$)"));

如果没有找到,arr即为null,据此判断用户是否曾经访问。

全屏广告的写法
其效果如sf上选择镜像站点的效果。
首先获取浏览器窗口的宽高(注意不是屏宽),在Firefox等浏览器中window.innerWidth和window.innerHeight保存着窗口宽高;IE中则是在document.documentElement.clientWidth和document.documentElement.clientHeight中,可以用一个简单的三目运算符获取我们需要的值。
接下来就可以用document.createElement方法创建一个div,设置它的style,宽高分别是刚刚得到的窗口宽高,绝对定位,左边距0,上边距0,设置一张背景图片:用Fireworks快速制作一张透明的PNG8,效果相当不错,唯一有些遗憾的是IE6并不支持PNG透明,虽然可以实现,但要废一番周折,这里不去讨论。
再创建一个div;用document.createTextNode方法创建一些文字;创建两个input,设置属性type为button,value分别是“确定”“取消”,绑定onclick事件,确定则window.location到veryftp,取消则document.body.removeChild,参数是我们最先创建的div名。最近创建的div设置一些style,定位方面我推荐用margin而非top、left,当然也是个人习惯问题。
接下来就是把这些对象一个一个append到它的上一级中。有一点要注意,在IE7中直接append按钮,按钮的定位会有明显的错误(目前为止发现IE7为数不多的bug之一),解决方法很简单,就是在两个button之外再套一个div。最后全部存放在document.body中即可。

右下角升起的广告
首先依然如同上面所说的方法创建相关的DOM对象,然后用setTimeout实现一个类似递归,设置一个间隔,每次减少一些即可。

总得来说,还是一个劳动力密集型的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值