2012-02-29 13 views
5

मैं एक फ़ंक्शन कॉल कर रहा हूं, जो एक टेबल बनाता है जिसमें कई लिंक शामिल हैं।जेएस: jQuery के बिना दायाँ क्लिक का पता लगाएं (इनलाइन)

मैं यह देखना चाहता हूं कि दाएं या बाएं माउस के साथ एक लिंक क्लिक किया गया है या नहीं।

मैंने निम्नलिखित भाग को <a> हाइपरलिंक में जोड़ने का प्रयास किया।

onmousedown="function mouseDown(e){ 
switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; } 
}" 

लेकिन कुछ भी नहीं होता अगर मैं एक लिंक पर क्लिक करता हूं।

+0

आंतरिक घटना हैंडलर विशेषताओं का उपयोग न करें। इसके बजाय डीओएम घटना बाध्यकारी का प्रयोग करें। – Quentin

+0

मैंने कोशिश की है, लेकिन यह मेरे लिए काम नहीं किया। हो सकता है क्योंकि तालिका बाद में लोड हो (और प्रस्तुत पृष्ठ के स्रोत कोड में प्रकट नहीं होती) –

उत्तर

14

एचटीएमएल:

<a href="#" onmousedown="mouseDown(event);">aaa</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

जावास्क्रिप्ट:

function mouseDown(e) { 
    e = e || window.event; 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​ 

demo

+2

मुझे पूरा यकीन है कि वैश्विक ईवेंट ऑब्जेक्ट के आधार पर यह आईई-केवल – Quentin

+0

@Quentin कम से कम, मैंने इसे क्रोम में करने की कोशिश की, और काम करता है। – xdazz

+2

क्रोम: हाँ, फ़ायरफ़ॉक्स: नहीं, आईई 9: नहीं: \ –

3

यहां xdazz के उत्तर का एक संशोधन है जो ई.बटन का उपयोग करने वाले ब्राउज़र का समर्थन करता है, मूल्य को सामान्य करता है, और इसे ई-मेल में संग्रहीत करता है। अतिरिक्त लाइनें JQuery लाइब्रेरी में उपयोग की जाती हैं।

function mouseDown(e) { 
    e = e || window.event; 
    if (!e.which && e.button !== undefined) { 
    e.which = (e.button & 1 ? 1 : (e.button & 2 ? 3 : (e.button & 4 ? 2 : 0))); 
    } 
    switch (e.which) { 
    case 1: alert('left'); break; 
    case 2: alert('middle'); break; 
    case 3: alert('right'); break; 
    } 
}​ 
संबंधित मुद्दे