diff --git a/cmd/site/pageview.go b/cmd/site/pageview.go index fe5f734..5154659 100644 --- a/cmd/site/pageview.go +++ b/cmd/site/pageview.go @@ -22,6 +22,11 @@ func init() { } func handlePageViewTimer(w http.ResponseWriter, r *http.Request) { + if r.Header.Get("DNT") == "1" { + http.NotFound(w, r) + return + } + data, err := ioutil.ReadAll(r.Body) if err != nil { ln.Error(r.Context(), err, ln.Info("while reading data")) diff --git a/static/js/pageview_timer.js b/static/js/pageview_timer.js index 470189e..df7b3c5 100644 --- a/static/js/pageview_timer.js +++ b/static/js/pageview_timer.js @@ -10,21 +10,26 @@ be ineffectual. */ -let startTime = new Date(); - -function logTime() { - let stopTime = new Date(); - let message = JSON.stringify( - { - "path": window.location.pathname, - "start_time": startTime.toISOString(), - "end_time": stopTime.toISOString(), - } - ); - - if (!window.navigator.sendBeacon("/api/pageview-timer", message)) { - alert("wtf"); +(function() { + let dnt = navigator.doNotTrack; + if (dnt == "1") { + return; } -} -window.addEventListener("pagehide", logTime, false); + let startTime = new Date(); + + function logTime() { + let stopTime = new Date(); + let message = JSON.stringify( + { + "path": window.location.pathname, + "start_time": startTime.toISOString(), + "end_time": stopTime.toISOString(), + } + ); + + window.navigator.sendBeacon("/api/pageview-timer", message); + } + + window.addEventListener("pagehide", logTime, false); +})();