我想在用户点击网站某个部分的 3 个以上链接时提示他们。我想知道解决这个问题的最佳方法。
我可以使用严格的客户端 Javascript 来做到这一点吗?或者这需要一些服务器端代码吗?
我已经在几个房地产网站上看到过这种方法,并想尝试一下。
我想在用户点击网站某个部分的 3 个以上链接时提示他们。我想知道解决这个问题的最佳方法。
我可以使用严格的客户端 Javascript 来做到这一点吗?或者这需要一些服务器端代码吗?
我已经在几个房地产网站上看到过这种方法,并想尝试一下。
function UpdateCount() {
if (localStorage.clickcount) {
if (Number(localStorage.clickcount) > 3) {alert();}
localStorage.clickcount = Number(localStorage.clickcount) + 1;
}
else {
localStorage.clickcount=1;
}
}
然后为链接上的 onclick 事件调用 UpdateCount()。
基于 CJ 答案中的代码的扩展示例。假设您有三个文件和其中的相互链接:
<!-- test1.htm -->
<a href="test2.htm">Test2</a>
<a href="test3.htm">Test3</a>
<!-- test2.htm -->
<a href="test1.htm">Test1</a>
<a href="test3.htm">Test3</a>
<!-- test3.htm -->
<a href="test1.htm">Test1</a>
<a href="test2.htm">Test2</a>
在每个文件中,您还包含了负责计算这些链接的点击次数的相同脚本。脚本内容如下:
var links = document.getElementsByTagName('a');
for(var i = 0, ii = links.length; i < ii; i++) {
links[i].addEventListener('click',ClickCounter,false);
}
function ClickCounter(e) {
if(localStorage.clickCount) {
if(+localStorage.clickCount === 3) {
alert("Three links visited already!");
e.preventDefault();
} else {
localStorage.clickCount = +localStorage.clickCount + 1;
}
} else {
localStorage.clickCount = 1;
}
}
这将允许用户访问三个链接。之后,用户会收到一个关于已经访问过三个页面的警告框,并且e.preventDefault()
会将用户保持在当前页面上。
当然,用户可以通过简单地删除适当的 localStorage 条目来绕过这种限制,因此,如果您的目标是进行某种阻塞或限制,则应该在服务器端进行,以防止用户轻易篡改。但是,如果您的目标是做一些“无害”的事情(例如,用户通常认为该功能是有益的),那么在客户端完成整个事情可能就可以了。