2012-11-07 18 views
6

मेरे पास एक लिंक (एंकर) है जिसमें एक विशिष्ट URL पर नेविगेट करने के लिए एक href संलग्न है जिसे 'www.bla.com' कहते हैं।Ctrl + क्लिक हैंडलर के साथ लिंक पर क्लिक करें

<a href='http://www.bla.com' /> 

मैं भी एक click हैंडलर लिंक है कि कुछ कार्य करता है और फिर एक ही विंडो में एक HTML दृश्य खोलता से जुड़ी है। सब कुछ पूरी तरह से अच्छी तरह से काम करता है।

हालांकि, जब उपयोगकर्ता किसी नए टैब/विंडो में लिंक खोलने के लिए 'ctrl + click' का उपयोग करता है, तो क्लिक हैंडलर को प्राथमिकता लेनी प्रतीत होती है और उसी विंडो में HTML दृश्य खुलती है। लेकिन मैं 'ctrl + click' व्यवहार को बनाए रखना चाहता हूं और उपयोगकर्ता को एक नए टैब/विंडो में लिंक खोलने की अनुमति देता हूं (बस एक सामान्य लिंक के रूप में)। ऐसा कैसे किया जा सकता था?

अग्रिम धन्यवाद!

+0

आप अपने हैंडलर में क्या उपयोग कर रहे हैं? मैंने इसे दोहराने की कोशिश की और केवल एक चीज जो मुझे मिल सकती है वह रोकता है यह एक 'चेतावनी' – Bankzilla

+0

है जो कई कुंजी हैं जो डिफ़ॉल्ट व्यवहार को बदलती हैं। आप इसे संभालने के लिए ['फ़िल्टर-परिवर्तित-क्लिक'] (https://github.com/bfred-it/filter-altered-clicks) जैसे कुछ का उपयोग करना बेहतर कर रहे हैं। –

उत्तर

6
function process(e){ 
    var evt = e ? e:window.event; 
    if(evt.ctrlKey) 
     alert("ctrlClicked"); 
}​ 

evt.ctrlK नियंत्रण कुंजी दबाए जाने पर सत्य वापस आ जाएगा, आप अपनी स्थिति को "अगर" ब्लॉक में लिख सकते हैं, मैंने केवल क्रोम और एफएफ के लिए इसका परीक्षण किया।

0
<a target="_blank" href='http://www.bla.com' /> 

एंकर टैग के भीतर लक्ष्य = "_ खाली" जोड़ें।

+0

जो काम नहीं करता है, मुझे डर है, क्योंकि _blank एक मानक टैब पर भी एक नया टैब/विंडो में लिंक खोलता है (जो मैं चाहता हूं)। – Saket

+0

जब आप ctrl दबाया जाता है, तो पता लगाने के लिए आप एक प्रमुख श्रोता जोड़ सकते हैं, फिर इसे लक्षित पैरामीटर को तभी बदलें जब यह नीचे रखा गया हो या नहीं। (आयोजित? "_blank": "_self") –

0

संबंधित click event objectctrlKey संपत्ति true पर सेट होगी यदि क्लिक होने पर नियंत्रण कुंजी (या समकक्ष) दबाया गया था। ईवेंट ऑब्जेक्ट की जांच करें और यदि नियंत्रण कुंजी दबाई गई थी, तो "HTML व्यू" चीज़ न करें।

<a href="#" onclick="alert(event.ctrlKey);">Click me!</a> 

हालांकि, यदि उपयोगकर्ता लिंक को किसी अन्य तरीके से सक्रिय करता है, तो आप एक क्लिक ईवेंट प्राप्त कर सकते हैं या नहीं भी।

उदा।

  1. सही बटन -> "नया टैब/विंडो में खुला" - कोई क्लिक करें घटना (फ़ायरफ़ॉक्स, आईई)
  2. टैब लिंक पर ध्यान केंद्रित करने, प्रेस दर्ज - डिस्पैच क्लिक घटना (फ़ायरफ़ॉक्स, आईई)
1

शायद ऐसा कुछ?

function onclick(e){ 
    var event = e ? e:window.event; 
    this.target = event.ctrlKey?"_blank":"_self"; 
}​ 
संबंधित मुद्दे