右键单击 ClojureScript?
Right Click in ClojureScript?
谁能告诉我如何在 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))))
经常在 ClojureScript 中使用 Google 闭包库(Event Handling | Closure Library | Google Developers) is used instead of raw JS. The events (Closure Library API Documentation - JavaScript) namespace contains the goog.events.EventType
枚举,它指定每个单独的事件类型:
(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
.
<!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 -->
观察:
- 右键单击(按钮 2)会触发
contextmenu
侦听器。 click
听众看不到它(即使没有 contextmenu
听众)。
- 第二次右键单击将关闭上下文菜单,但不会触发任何侦听器。
谁能告诉我如何在 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))))
经常在 ClojureScript 中使用 Google 闭包库(Event Handling | Closure Library | Google Developers) is used instead of raw JS. The events (Closure Library API Documentation - JavaScript) namespace contains the goog.events.EventType
枚举,它指定每个单独的事件类型:
(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
.
<!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 -->
观察:
- 右键单击(按钮 2)会触发
contextmenu
侦听器。click
听众看不到它(即使没有contextmenu
听众)。 - 第二次右键单击将关闭上下文菜单,但不会触发任何侦听器。