2011-09-26 21 views
11

मैं वर्तमान में एक साधारण फ़ोरम एप्लिकेशन डिज़ाइन कर रहा हूं। यह ज्यादातर jQuery/AJAX द्वारा संचालित है और एक ही पृष्ठ पर सबकुछ लोड करता है; हालांकि, मुझे पता है कि कभी-कभी उपयोगकर्ता फ़ोरम ब्राउज़ करते समय उन्हें नए टैब में देखने के लिए कई विषयों को खोलना चाहते हैं।jQuery: नए टैब में माउस क्लिक और ओपन टार्गेट का पता लगाएं

मेरा समाधान यह पता लगाने के लिए था कि मध्य माउस बटन पर क्लिक किया गया है और बाएं माउस बटन क्लिक किया गया है, और फिर विभिन्न कार्यवाही कर रहा है। जब मैं बाएं माउस बटन पर क्लिक करता हूं, तो मैं खिड़की में AJAX के साथ लक्ष्य लोड करना चाहता हूं, अन्यथा इसे एक नए टैब में लोड करें।

मेरी एकमात्र समस्या यह है कि मैं jQuery के साथ एक नए टैब में एक लक्षित स्थान खोलने के तरीके के बारे में नहीं जानता। स्पष्ट रूप से इच्छा पर नए टैब खोलने की अनुमति नहीं है, लेकिन क्या इस प्रकार के व्यवहार को उपयोगकर्ता द्वारा उत्पन्न कार्रवाई में असाइन करने का कोई तरीका है?

धन्यवाद!

उत्तर

15

को देखें नमूना कोड पर देखने के लिए ले जा सकते हैं। यह मदद मिल सकती है

<script type='text/javascript'> 
    jQuery(function($){ 
     $('a').mousedown(function(event) { 
      switch (event.which) { 
       case 1: 
        //alert('Left mouse button pressed'); 
        $(this).attr('target','_self'); 
        break; 
       case 2: 
        //alert('Middle mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       case 3: 
        //alert('Right mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       default: 
        //alert('You have a strange mouse'); 
        $(this).attr('target','_self"'); 
      } 
     }); 
    }); 
</script> 
+1

लिंक पर क्लिक करते समय, क्या कार्रवाई निष्पादित होने से पहले यह लक्ष्य विशेषता को बदल देगा? – Phillip

+0

हां, मैं कार्रवाई से पहले विशेषता बदल दूंगा। –

+0

मैं चाहता हूं कि जब उपयोगकर्ता लिंक पर क्लिक करें या इसे एक नया टैब खोलें। लिंक छुपा रहा है लेकिन इन तरीकों से यह केवल आईई पर संभव है ... मैं क्या कर सकता हूं? –

0

मध्य माउस बटन की डिफ़ॉल्ट कार्रवाई एक नए टैब में खोलना है।

आप एक नया टैब खोलने के लिए _blank पर हाइपरलिंक लक्ष्य विशेषता सेट कर सकते हैं।

<a href="#link" target="_blank">Link</a> 

आप भी इस सवाल How to distinguish between left and right mouse click with jQuery

+0

मुझे अपना प्रश्न संपादित करने और इसे और स्पष्ट करने की आवश्यकता है। मैं एजेक्स के साथ लक्ष्य को बाएं-क्लिक पर लोड करना चाहता हूं, और मध्य-माउस क्लिक पर एक नए टैब में खुलता हूं। – Phillip

1
$('#element').mousedown(function(event) { 
      if(event.which == 3) { // right click 
       window.open("newlocation.html",""); 
      } 
    }); 

यह रहते http://jsfiddle.net/8CHTm/1/

+0

@ फिलिप मैंने एक पहेली जोड़ दी है। – Ehtesham

9
<a href="some url" target="_newtab">content of the anchor</a> 

जावास्क्रिप्ट में आप

$('#element').mousedown(function(event) { 
     if(event.which == 3) { // right click 
      window.open('page.html','_newtab'); 
     } 
}) 
+0

आह मैं देखता हूं, मुझे नहीं पता था कि मैं window.open पर लक्ष्य विशेषता सेट कर सकता हूं। यह एक कोशिश दे देंगे। धन्यवाद! – Phillip

+0

आपका स्वागत है ...................: डी: डी: डी: डी –

5

उपयोग कर सकते हैं आप यह भी विचार करने के लिए है कि ctrl-क्लिक करें और cmd क्लिक कर रहे हैं की जरूरत देखें नए टैब खोलने के लिए उपयोग किया जाता है (विंडोज़/लिनक्स और मैक में क्रमशः। इसलिए, यह एक और पूरा समाधान होगा:

jQuery.isClickEventRequestingNewTab = function(clickEvent) { 
    return clickEvent.metaKey || clickEvent.ctrlKey || clickEvent.which === 2; 
}; 
-1

बजाय "_blank" के "_newTab"

window.open (URL "_newtab") करने का प्रयास करें;

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