ユーザーが Web サイトの特定のセクションで 3 つ以上のリンクをクリックすると、プロンプトが表示されます。これにアプローチする最良の方法を知りたいです。
厳密にクライアント側のJavascriptでこれを行うことはできますか? または、これにはサーバー側のコードが必要ですか?
これがいくつかの不動産サイトで使用されているのを見たので、実験したいと思います。
ユーザーが Web サイトの特定のセクションで 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() を呼び出します。
CJの回答にあるコードに基づいた少し拡張された例。3つのファイルとそれらの相互へのリンクがあると考えてください。
<!-- 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;
}
}
これにより、ユーザーは3つのリンクにアクセスできます。その後、ユーザーはすでに3つのページにアクセスしたことに関するアラートボックスを受け取り、e.preventDefault()
ユーザーを現在のページにとどめます。
もちろん、ユーザーは適切なlocalStorageエントリを削除するだけでこの種の制限を回避できます。したがって、何らかのブロックまたは制限を行うことが目標である場合は、ユーザーによる簡単な改ざんを防ぐために、サーバー側で行う必要があります。ただし、目標が「無害」なことを行うことである場合(たとえば、機能はユーザーが一般的に有益であると考えるものです)、クライアント側ですべてを行うことはおそらく問題ありません。