2

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 )。

4

1 に答える 1