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

相關問題