在网站上点击三个链接后提示用户?

时间:2013-02-26 02:03:57

标签: javascript user-interface client-side server-side user-experience

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

我可以使用严格的客户端Javascript来执行此操作吗?或者这需要一些服务器端代码?

我已经在一些房地产网站上看到过这种情况,并希望进行试验。

2 个答案:

答案 0 :(得分:1)

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

然后在链接上调用onClick事件的UpdateCount()。

答案 1 :(得分: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条目来解决这种限制,因此如果您的目标是进行某种阻塞或限制,则应该在服务器端完成以防止轻松用户篡改。如果你的目标是做一些“无害”的事情(例如,功能是用户通常会认为有益的东西),但是做客户端的整个事情可能会很好。