2016-04-11 7 views
7

किसी को भी मुझे बता सकते हैं कि कैसे Clojure में एक राइट क्लिक ईवेंट हैंडलर का उत्पादन करने के? मैं सरल क्लिक के लिए "ऑन-क्लिक" से परिचित हूं लेकिन सही या डबल क्लिक नहीं। ऑनलाइन कोई सहायक संसाधन नहीं मिल रहा है। धन्यवाद!क्लोजरस्क्रिप्ट में राइट क्लिक करें?

+1

देखें http://stackoverflow.com/questions/2405771/is-right-click-a-javascript-event – edbond

+0

धन्यवाद लेकिन यह जावास्क्रिप्ट क्लोजर के लिए नहीं है। मैं समझता हूं कि जेएस क्लोजर के हुड के नीचे चल रहा है लेकिन क्लोजर में कोड स्निपेट की तलाश में है। –

उत्तर

7
अक्सर ClojureScript में

गूगल बंद पुस्तकालय (Event Handling |  Closure Library | Google Developers) कच्चे जे एस के बजाय प्रयोग किया जाता है बटन नंबर सही बटन के लिए 2 है ।

(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) नाम स्थान goog.events.EventType गणन जो प्रत्येक व्यक्ति घटना प्रकार निर्दिष्ट होता है।

<!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 श्रोता है) नहीं मिलता है।
  • एक दूसरा राइट क्लिक संदर्भ मेनू खारिज करेगा लेकिन न तो श्रोता निकाल दिया जाता है।
5

om का उपयोग करते हुए मैं सही संदर्भ मेनू घटना के रूप में क्लिक कर ली।

{: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)))) 

https://developer.mozilla.org/en/docs/Web/API/MouseEvent

संबंधित मुद्दे