Domina の touchstart イベントから「touch」または「changedTouches」リストを取得できません。
これが私の :require のものです:
(ns myproj
(:require-macros [hiccups.core :as h])
(:require [domina :as dom]
[hiccups.runtime :as hiccupsrt]
[domina.events :as ev]
[cljs.reader :refer [read-string]]
[wsosc :as wo]
[clojure.browser.repl :as repl]
))
そして、これが私の touchstart イベントハンドラーです:
(defn touchstart [evt]
; store event in an atom for repl access
(swap! de (fn [x] evt))
; print something to html to show a result (no console on the phone)
(dom/set-text! (dom/by-id "result") (str "blah" evt))
; hopefully someday extract touch coordinates here.
(let [rct (.getBoundingClientRect (dom/by-id "osccanvas"))
;touchlist1 (get evt "changedTouches")
;touchlist2 (.changedTouches evt)
;touchlist3 (.-changedTouches evt)
;kies (keys evt)]
wat (:type evt) ; this works
;wat (ev/raw-event evt) ; this works
;touchlist (.-changedTouches evt)]
;touch (.item touchlist 1)]
]
(dom/set-text! (dom/by-id "result") (str "touchstart touch:" wat))))
「de」は、デバッグに使用しようとしているアトムです。イベントから :type を取得できますが、それだけです。ev/raw-event を除いて、他のコメントされたものはほとんど機能しません。raw-event は、少なくとも私にとっては、repl からはかなり不可解なオブジェクトを返します。交換したら!raw-event を使用すると、次のようになります。
ClojureScript:myproj>@de
#<[object Object]>
これから情報を抽出する方法がわかりません。(keys x) や (.keys x) などにはかなり反応しないようです。
上記の関数で (:type evt) を呼び出すこともできますが、de に evt を割り当てると、repl の 'de' アトム、つまり (:type @de )。