0

我想在用户点击网站某个部分的 3 个以上链接时提示他们。我想知道解决这个问题的最佳方法。

我可以使用严格的客户端 Javascript 来做到这一点吗?或者这需要一些服务器端代码吗?

我已经在几个房地产网站上看到过这种方法,并想尝试一下。

4

2 回答 2

1
function UpdateCount() {
  if (localStorage.clickcount) {
    if (Number(localStorage.clickcount) > 3) {alert();}
    localStorage.clickcount = Number(localStorage.clickcount) + 1;
  }
  else {
    localStorage.clickcount=1;
  }
}

然后为链接上的 onclick 事件调用 UpdateCount()。

于 2013-02-26T02:11:27.593 回答
0

基于 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 条目来绕过这种限制,因此,如果您的目标是进行某种阻塞或限制,则应该在服务器端进行,以防止用户轻易篡改。但是,如果您的目标是做一些“无害”的事情(例如,用户通常认为该功能是有益的),那么在客户端完成整个事情可能就可以了。

于 2013-02-26T02:38:32.237 回答