Clojure'da bir sağ tıklatma olay işleyicisi nasıl üretilir? Basit tıklamalar için "tıkla-tıkla" ya da sağ veya çift tıklamalara aşina değilim. Çevrimiçi herhangi bir yararlı kaynak bulamıyor. Teşekkürler!ClojureScript'te Sağ Tıklama Yapılsın mı?
7
A
cevap
7
Google Kapatma kitaplığı (Event Handling | Closure Library | Google Developers) yerine çiğ JS kullanılır Düğme numarası sağ düğme için 2'dir .
(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
: events (Closure Library API Documentation - JavaScript) ad her olay türünü belirten goog.events.EventType
sayımını içermektedir.
<!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 -->
gözlemleyin:
- bir sağ tıklama (düğme 2)
contextmenu
dinleyicisi ateşler.click
dinleyici onu göremiyor (contextmenu
dinleyicisi olmasa bile). - İkinci bir sağ tıklama bağlam menüsünü reddeder, ancak dinleyici tetiklenmez.
5
om
Kullanarak içerik menüsü olayı olarak sağ tıklattım.
{:onContextMenu (fn [e]
(prn e (.-button e)))}
veya düz html + cljs içinde
:<div id="btn">Click me</div>
(.addEventListener (.getElementById js/document "btn")
"contextmenu" (fn [e] (prn e (.-button e))))
ClojureScript içinde Sıkça
http://stackoverflow.com/questions/2405771/is-right-click-a-javascript-event adresine bakın. – edbond
Teşekkürler ama bu Javascript için Clojure değil. JS'nin Clojure'un kaputunun altında çalıştığını, ancak Clojure'da bir kod parçacığı aradığını anlıyorum. –