Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
右键单击ClojureScript?_Clojure_Mouseevent_Clojurescript - Fatal编程技术网

右键单击ClojureScript?

右键单击ClojureScript?,clojure,mouseevent,clojurescript,Clojure,Mouseevent,Clojurescript,谁能告诉我如何在Clojure中生成右键单击事件处理程序?我熟悉“:on click”用于简单单击,但不适用于右键或双击。似乎无法在网上找到任何有用的资源。谢谢 使用om我得到了右键单击作为上下文菜单事件。右按钮的按钮编号为2: {:onContextMenu (fn [e] (prn e (.-button e)))} 或者在纯html+cljs中: <div id="btn">Click me</div> (.addE

谁能告诉我如何在Clojure中生成右键单击事件处理程序?我熟悉“:on click”用于简单单击,但不适用于右键或双击。似乎无法在网上找到任何有用的资源。谢谢

使用
om
我得到了右键单击作为上下文菜单事件。右按钮的按钮编号为2:

{:onContextMenu (fn [e]
                   (prn e (.-button e)))}
或者在纯html+cljs中:

  <div id="btn">Click me</div>

  (.addEventListener (.getElementById js/document "btn")
    "contextmenu" (fn [e] (prn e (.-button e))))
点击我
(.addEventListener(.getElementById js/document“btn”)
“上下文菜单”(fn[e](prn e(.-按钮e)))

在ClojureScript中,经常使用Google闭包库()代替原始JS。命名空间包含枚举,枚举指定每个单独的事件类型:

(ns test.core
  (:require [goog.dom :as dom]
            [goog.events :as events]))

(letfn [(menu-listener [event] 
          (.log js/console (str "contextmenu " (.-button event))))
        (click-listener [event]
          (let [btn (.-button event)
                msg (if (= btn 2) "Right-click" (str "Button " btn))] 
            (.log js/console msg)))]

  (events/listen (dom/getElement "click-target") "contextmenu" menu-listener)
  (events/listen (dom/getElement "click-target") "click" click-listener))   

;; src/test/core.cljs


右键菜单

右键单击我

注意:

  • 右键单击(按钮2)将触发
    上下文菜单
    侦听器。
    单击
    侦听器无法看到它(即使没有
    上下文菜单
    侦听器)
  • 第二次右键单击将关闭上下文菜单,但两个侦听器都不会被触发

请参见“谢谢”,但这是针对Javascript而不是Clojure的。我知道JS是在Clojure的保护下运行的,但正在Clojure中查找代码片段。事件库的链接已断开,下面是指向事件类型源的链接:
<!DOCTYPE html>
<html>
  <head>
    <title>contextmenu</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  </head>
  <body>
    <p id="click-target">Right click on me</p> 
    <script src="out/test.js" type="text/javascript"></script>
  </body>
</html>

<!-- index.html -->