フォームの送信入力の onclick イベントに分析イベント追跡を追加しようとしています。
この点に到達するために、複数の異なる例を試し、いくつかの異なる SO 投稿を参照しました。onclick を取得して、フォームを送信するか、追跡イベントを発生させることができますが、両方を実行することはできません。
最初の例: (フォームとログをコンソールに送信しますが、イベントは発生しません)
<!-- Analytics tracking code -->
<form action="test.php" id="form" method="post">
<input type="text" name="name" id="name">
<!-- Submits form + logs to console but doesn't fire event -->
<input type="submit" name="submit" value="Submit" onclick="
var _this = this;
_gaq.push(
['_trackEvent', 'Forms', 'Submit', 'Home Contact'],
function() {
console.log('submitting');
$(_this).parents('form').submit();
}
);
">
</form>
2 番目の例: (イベント + ログをコンソールに送信しますが、フォームは送信しません)
<!-- Analytics tracking code -->
<form action="test.php" id="form" method="post">
<input type="text" name="name" id="name">
<!-- Fires event + logs to console but doesn't submit form -->
<input type="submit" name="submit" value="Submit" onclick="
var _this = this;
_gaq.push(['_set','hitCallback',function(){
console.log('submitting');
$(_this).parents('form').submit();
}]);
_gaq.push(
['_trackEvent','My category','My action']
);
return !window._gaq;
">
</form>
また、最初の例の onclick イベントの最後に return false を追加すると、分析イベントの追跡が開始されますが、フォームは送信されないこともわかりました。