1

Web サイトで特定のリンクがクリックされた回数を追跡する必要があります。

クリック DOM イベントをバインドしてカウント関数を呼び出し、document.location メソッドを使用してリンクの href 属性で最初に指定されたページにユーザーをリダイレクトする JavaScript ベースのメソッドを使用します。

これは、私のコードが現在行っていることの図です:

<!DOCTYPE html>

<html>
<head>
    <meta charset="utf-8">
    <title>Test file</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
    <script type="text/javascript">

    $(document).ready(function () {
        $(".myLink").on('click', function (event) {
            console.log(event.which);
            if (event.which == 2 ) { //it's a middleclick
                setTimeout(function () { 
                    alert("click counted!");
                }, 1000);
            } else { //it's a regular click
                setTimeout(function () { 
                    alert("click counted!");
                    document.location = "page_a.html";
                }, 1000);
                event.preventDefault(); //prevents the browser to load the linked page before the click is counted
            }
        });
    });

    </script>
</head>
<body>
    <h1>Test file</h1>
    <a class="myLink" href="page_a.html">Page A</a>
</body>
</html>

これは通常のクリックで機能しますが、期待どおりに機能しない場合があります。

  • ユーザーがリンクを右クリックして [新しいタブで開く] をクリックした場合、リンクはカウントされません。
  • ユーザーが、新しいタブでリンクを開くためのデフォルトのショートカットである crtl+click (Mac では command+click) を使用する場合、クリックはカウントされますが、新しいタブで開く代わりに、現在のタブを次のように置き換えます。通常のクリックで十分です。

新しいタブでリンクを開くための一般的なデフォルトのショートカットでもあるミドルクリックを使用している場合、うまく機能しているようです。

私の質問は簡単です。さまざまな方法で新しいタブでリンクを開くことができるというデフォルトの動作を維持しながら、クリックを追跡するにはどうすればよいですか。

ありがとう!

4

0 に答える 0