我想在用戶點擊某個網站某個部分的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