aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOscar Najera <hi@oscarnajera.com>2025-02-09 16:12:02 +0100
committerOscar Najera <hi@oscarnajera.com>2025-02-09 16:12:02 +0100
commitf72d6e79f8e463bac3bb2d14cc8b6c3009d24e37 (patch)
tree651602a14db2c5748316380d901ef5a2a38a7e22
parentc168c6b81d628894c5689fbf70c6b2f0b5de0e6f (diff)
downloadscratch-f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37.tar.gz
scratch-f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37.tar.bz2
scratch-f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37.zip
correctly instrument clicks
-rw-r--r--webstats/server.lisp3
-rw-r--r--webstats/stats.paren32
2 files changed, 18 insertions, 17 deletions
diff --git a/webstats/server.lisp b/webstats/server.lisp
index 0c80060..148f0aa 100644
--- a/webstats/server.lisp
+++ b/webstats/server.lisp
@@ -69,6 +69,7 @@
(hunchentoot:define-easy-handler (stat-js :uri "/stats.js") ()
+ (setf (hunchentoot:content-type*) "text/javascript")
(ps:ps-compile-file "stats.paren"))
(hunchentoot:define-easy-handler (link :uri "/link") ()
@@ -76,7 +77,7 @@
(:doctype)
(:html
(:header (:title "hu yu ipi")
- (:script :src "/stats.js"))
+ (:script :src "/stats.js" :type "text/javascript"))
(:body
(:p "learning "
(:a :href "vars" "some explodiert")
diff --git a/webstats/stats.paren b/webstats/stats.paren
index 6733ff4..896dcec 100644
--- a/webstats/stats.paren
+++ b/webstats/stats.paren
@@ -9,25 +9,25 @@
:headers (create "Content-Type" "application/x-www-form-urlencoded")
:body (new (-u-r-l-search-params data)))))
+(defun register-click (event)
+ (when (or (= 1 (@ event which))
+ (= 2 (@ event which)))
+ (chain event (prevent-default))
+ (let ((link (getprop event 'target 'href)))
+ (chain
+ (register-visit (create :click link
+ :page (@ document location href)))
+ (finally (lambda ()
+ (if (= 1 (@ event which))
+ (setf (@ window location href) link)
+ (chain window (open link "_blank")))))))))
+
(defun instrument-links ()
(chain document (query-selector-all "a")
(for-each (lambda (link)
- (setf (getprop link 'onclick)
- (lambda (event)
- (chain console (log event (@ event which)))
- (chain event (prevent-default))
- (when (or (= 1 (@ event which))
- (= 2 (@ event which)))
- (chain console (warn "in req"))
- (chain
- (register-visit (create :click (getprop link 'href)
- :page (@ document location href)))
- (finally (lambda ()
- (if (= 1 (@ event which))
- (setf (@ window location href) (getprop link 'href))
- (chain window (open (getprop link 'href) "_blank"))))))))
-
- )))))
+ (setf (@ link onclick) #'register-click)
+ (setf (@ link onauxclick) #'register-click)
+ ))))
(defun register-page-load ()
(let ((data (create :title (@ document title)