私がやろうとしているのは、特定のWebページでのすべてのユーザーアクティビティを記録することです。そのためsocket.io
、ページに登録されたイベントを次のようなサーバーに送信するために使用しています:
$(document).on('click.mynamespace', function(event){
var elem = event.target;
socket.emit('my-message', { 'element' : elem };
}
私が直面している問題は、ターゲット要素がこの種のリンクである場合です<a href="#" onclick="someFunctionThatRedirects()">My link</a>
。どのような関数が呼び出されても、socket.emit
ステートメントが適切に実行される前にページがアンロードされます (ソケットを切断します)。
これはプラグインとして機能するため、これをできるだけ普遍的にしたいと考えており、私が制御できないあらゆる種類の環境に適応させたいと考えています。
それで、すべてのクリックイベントを「ハイジャック」し、最初にカスタム関数で送信してから、「通常の」実行を続行する方法はありますか?
編集
イベントが終了しないのは FF (テスト済み14.0.1
)のみのようです。socket.emit
Chrome21.0.x
は動作しているようですが、これが「偶然」によるものかどうかはわかりません。
編集2
関数someFunctionThatRedirects
は実際にこのようにリダイレクトしますwindow.location.ref = clickedurl