2012-05-27 12 views
6

जब मैं .click()<a> टैग पर उपयोग करता हूं, तो ईवेंट केवल तभी काम करता है जब मैं तत्व पर क्लिक करता हूं। अन्यथा, यदि उपयोगकर्ता राइट क्लिक> नई विंडो में खोलें या नए टैब में खोलें, तो यह click() ईवेंट ट्रिगर नहीं करता है।.click() ईवेंट जब 'नया टैब/विंडो में खोलें'

तो, मेरा सवाल है ... मैं click() ईवेंट को कैसे ट्रिगर करूं जब उपयोगकर्ता सही क्लिक> नया टैब/विंडो में खुलता है?

$("a").click(function(){ 
    alert('You clicked me!'); 
}); 
+0

ummm .. यह केवल एक दायाँ क्लिक है, न कि 'नई विंडो/टैब' में खुलें। –

+1

मुझे नहीं लगता कि यह संभव है। माउस का दायां बटन पकड़ने और मैन्युअल रूप से 'क्लिक' ईवेंट को ट्रिगर करने का एकमात्र तरीका है। – VisioN

+0

मुझे नहीं लगता कि यह संभव है। मुझे लगता है कि एक कारण यह है कि आप नहीं चाहते कि वेबसाइट आपके द्वारा देखे जा रहे बाहरी लिंक को ट्रैक करने में सक्षम हो। – gigadot

उत्तर

2

आप इस कोड की कोशिश कर सकते हैं, लेकिन याद रखें कि यूआई को बदलने के लिए एक अच्छा ideia नहीं है::

var addEvent = (document.addEventListener) ? 
    function(target,event,fn){ 
     if(target) return target.addEventListener(event,fn,false); 
    }: 
    function(target,event,fn){ 
     if(target) return target.attachEvent(('on' + event),fn); 
    }, 
allLinks = document.links || document.getElementsByTagName('a'); 
for(var i=0;i<allLinks.length;i++) 
    addEvent(allLinks[i],'mouseup',function(e){ 
     var e = e || event; 
     if(e.which===3){ 
      alert('Open in new tab/window'); 
      e.preventDefault(); 
      return false; 
     } 
    }); 

<a href="url">Click Me</a> 

यहाँ जे एस है:

यहाँ HTML है

+0

ऐसा लगता है कि यह सभी सही क्लिक को "नए टैब में खोलें" ईवेंट के रूप में मानता है। – dlsso

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