diff options
author | Oscar Najera <hi@oscarnajera.com> | 2025-02-09 16:12:02 +0100 |
---|---|---|
committer | Oscar Najera <hi@oscarnajera.com> | 2025-02-09 16:12:02 +0100 |
commit | f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37 (patch) | |
tree | 651602a14db2c5748316380d901ef5a2a38a7e22 | |
parent | c168c6b81d628894c5689fbf70c6b2f0b5de0e6f (diff) | |
download | scratch-f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37.tar.gz scratch-f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37.tar.bz2 scratch-f72d6e79f8e463bac3bb2d14cc8b6c3009d24e37.zip |
correctly instrument clicks
-rw-r--r-- | webstats/server.lisp | 3 | ||||
-rw-r--r-- | webstats/stats.paren | 32 |
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) |