0

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

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

我已经看到这在一些房地产网站上使用,并想实验。

+0

localstorage更新每次点击并返回时提示3 – 2013-02-26 02:06:08

+1

他们是真正的超链接,还是他们使用AJAX?如果他们是AJAX,你可以在Javascript中保留一个计数器。如果他们是超链接,则需要使用localstorage或cookie。 – Barmar 2013-02-26 02:07:17

回答

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条目来避开这种限制,所以如果你的目标是做某种阻塞或限制,它应该在服务器端完成以防止方便用户篡改。如果你的目标是做一些“无害”的事情(例如,功能是用户通常认为有益的东西),但是,做客户端的整个事情可能会很好。

+0

感谢您的阐述。这有很大帮助。 – user2109495 2013-02-26 03:13:07

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

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

+0

太棒了!非常感谢! – user2109495 2013-02-26 03:12:42

相关问题