Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在站点上单击三个链接后提示用户?_Javascript_User Interface_Client Side_Server Side_User Experience - Fatal编程技术网

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

Javascript 在站点上单击三个链接后提示用户?,javascript,user-interface,client-side,server-side,user-experience,Javascript,User Interface,Client Side,Server Side,User Experience,我想提示用户,一旦他们点击了一个网站的某一部分超过3个链接。我想知道最好的方法 我可以用严格的客户端Javascript实现这一点吗?或者这需要一些服务器端代码吗 我已经在几家房地产网站上看到了这一点,我想尝试一下 function UpdateCount() { if (localStorage.clickcount) { if (Number(localStorage.clickcount) > 3) {alert();} localStorage.clickcou

我想提示用户,一旦他们点击了一个网站的某一部分超过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()。假设你有三个文件和它们之间的链接:

<!-- 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;
  }
}
var links=document.getElementsByTagName('a');
对于(变量i=0,ii=links.length;i
这将允许用户访问三个链接。之后,用户将收到一个关于已经访问了三个页面的警告框,并且
e.preventDefault()
将让用户保持在当前页面上


当然,用户可以通过简单地删除适当的localStorage条目来绕过这种限制,因此,如果您的目标是执行某种阻塞或限制,那么应该在服务器端执行,以防止用户容易篡改。如果你的目标是做一些“无害的”(比如说,功能是用户通常认为是有益的),但是,做整个事情的客户端可能会很好。< /p>每次点击和返回提示时,LoalStor更新都是真正的超链接,还是使用Ajax?如果它们是AJAX,您只需在Javascript中保留一个计数器即可。如果它们是超链接,你需要使用本地存储或cookies。太棒了!非常感谢你!谢谢你的详细说明。这很有帮助。