怎样只使用 CSS 进行用户追踪?

)}

app.listen(8080)

复制代码

至于后端,我使用 Express.js 作为服务器。它提供了一个简单的 HTML 网站;如果访问设备是智能手机,则会调用 mobile 路由。并且我们的后端是唯一使用 JavaScript 的地方。

@media only screen and (max-width: 768px) {

body {

background-image: url(“http://localhost:8080/mobile”);

}

}

复制代码

在我们的 index.html 文件中,我们有了上面的 CSS 代码。只有在用户设备与媒体查询匹配的时候,才请求背景图片。

如果现在一部智能手机访问这个页面,媒体查询会执行,并发送请求背景图片的请求,同时服务端会输出它是智能手机。这些操作是完全没有使用 JavaScript。

并且由于我们不会发送一张图片作为回应,这个网站内容将不会有任何改变。

找到操作系统信息


现在变得更加疯狂,我们能大致找到用户操作系统通过它支持的字体。在 CSS 中,我们可以使用多种后备方案,换句话说,可以指定多种字体。如果第一个在系统上不起作用,浏览器将会尝试第二个。

font-family: BlinkMacSystemFont, "Arial"; 当我在我们的网站嵌入这句代码时,我的 MacBook 使用第一种苹果标准字体,这字体只可以在 Mac OS 上使用。当在我的 Windows PC 上,Arial 正常使用。

当使用字体时,我们可以定义自定义字体以及从什么地方加载它。Google 字体的工作方式相同,如果我们要从某处使用自定义的字体,必须先从服务器加载它。并且我们可以多次使用字体。

@font-face {

font-family: Font2;

src: url(“http://localhost:8080/notmac”);

}

body {

font-family: BlinkMacSystemFont, Font2, “Arial”;

}

复制代码

这里我们为了全部的 body 部分设置了字体。从逻辑上讲,你只能使用一种字体。以至于在 MacBook 上,使用的是第一种字体,即系统自己的字体。在类似 Windows 的其他系统上,系统检查字体是否存在。当然,肯定不存在,因此尝试使用下一种我们自己定义的字体。它仍然不得不从服务端加载,因此我们的 CSS 代码会再次触发 GET 请求。

毕竟 Font2 不是一个真正的字体,因此我们继续尝试,最终将使用 Arial 字体。尽管如此,我们仍然可以在用户无感知的情况下,使用一个合理的字体。

追踪元素信息


到目前为止,我们所做的事情就是当用户抵达网站,立即对信息进行分析。当然,我们也可以利用 CSS 对单独的事件做出应对。

如下所示,我们可以使用下面的例子,来分析鼠标悬停或活动事件。

Hover me

复制代码

当鼠标每次悬停在按钮上,它会一次又一次的设置背景图片,一个 GET 请求也随之发出。

我们可以在按钮被点击时,做相同的事情。在 CSS 中,这就是活动事件。

Click me

复制代码

还有一系列其他事件。例如,悬停事件几乎适用在每一个元素上。因此从理论上来讲,我们可以追踪用户的每一个行为。

犹豫计时器

使用更多的代码,我们可以组合这些事件并且了解更多信息,而不仅仅是发生了那些事件。

对于许多网站主来说,更感兴趣的是,用户在看到或悬停在元素上犹豫了多久才点击某个元素。通过下面的代码,我们可以测量用户悬停后点击所花费的时间。

let counter;

app.get(“/one-hovered”, (req, res) => {

counter = Date.now();

});

app.get(“/one-active”, (req, res) => {

console.log(“Clicked after”, (Date.now() - counter) / 1000, “seconds”);

});

复制代码

用户一旦悬停,计时器就会启动。最后,我们可以算出直到点击过了几秒。

你可能会认为由于它嵌入在 CSS 代码中,统计的可能并不准确,但事实并非如此。由于请求的体积十分小,并且立即作用在服务器上。我试了几次并测量了时间,最终测量的结果非常精确。

很惊人,不是吗?

让整个功能更美观


最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值