我想在用户点击某个网站某个部分的3个以上链接时提示用户。我想知道解决这个问题的最好方法。在网站上点击三个链接后提示用户?
我可以用严格的客户端Javascript来做到这一点吗?或者这会需要一些服务器端代码?
我已经看到这在一些房地产网站上使用,并想实验。
我想在用户点击某个网站某个部分的3个以上链接时提示用户。我想知道解决这个问题的最好方法。在网站上点击三个链接后提示用户?
我可以用严格的客户端Javascript来做到这一点吗?或者这会需要一些服务器端代码?
我已经看到这在一些房地产网站上使用,并想实验。
基于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条目来避开这种限制,所以如果你的目标是做某种阻塞或限制,它应该在服务器端完成以防止方便用户篡改。如果你的目标是做一些“无害”的事情(例如,功能是用户通常认为有益的东西),但是,做客户端的整个事情可能会很好。
感谢您的阐述。这有很大帮助。 – user2109495 2013-02-26 03:13:07
function UpdateCount() {
if (localStorage.clickcount) {
if (Number(localStorage.clickcount) > 3) {alert();}
localStorage.clickcount = Number(localStorage.clickcount) + 1;
}
else {
localStorage.clickcount=1;
}
}
然后调用UpdateCount()获取链接上的onclick事件。
太棒了!非常感谢! – user2109495 2013-02-26 03:12:42
localstorage更新每次点击并返回时提示3 – 2013-02-26 02:06:08
他们是真正的超链接,还是他们使用AJAX?如果他们是AJAX,你可以在Javascript中保留一个计数器。如果他们是超链接,则需要使用localstorage或cookie。 – Barmar 2013-02-26 02:07:17