2011-12-01 13 views
6
खोलने का मतलब है

अधिकांश आधुनिक ब्राउज़र आदेशों का समर्थन ctrl+click या command+click या नया टैब या एक नई विंडो में लिंक खोलने समान।onclick पर निर्धारित करें कि क्या क्लिक किया लिंक एक नई विंडो या टैब

एक आवेदन में, मैं लिंक पर क्लिक पर विकलांग प्राप्त करना चाहते हैं। लेकिन केवल, यदि लक्ष्य एक ही विंडो है (उदाहरण के लिए, यह एक नए टैब में खुलता है, तो मैं नहीं चाहता कि लिंक अक्षम हो जाए क्योंकि इसे फिर से क्लिक करना उचित है)।

मैंने कुछ कोशिश की और क्लिक पर बनाए गए ईवेंट ऑब्जेक्ट को डीबग किया - लेकिन मुझे कोई जानकारी नहीं मिल रही है कि लक्ष्य एक नया टैब या एक नई विंडो है या नहीं।

ज्ञात कामकाज: निश्चित रूप से यह जांचना संभव है कि किसी विशिष्ट लिंक पर क्लिक करते समय एक निश्चित कुंजी दबाई गई हो, एक आसान बात - लेकिन चूंकि ये आदेश ब्राउज़र से ब्राउज़र और ओएस से ओएस तक भिन्न होते हैं, इसलिए किसी को परिभाषित करना होगा एक जटिल मैपिंग और जो उपयोगकर्ता ने कॉन्फ़िगर किया है और इसी तरह ठीक करता है।

वहाँ का निर्धारण करने के किसी भी विश्वसनीय तरीका, है स्थान एक नया टैब या विंडो में खोला जाना चाहिए या नहीं? http://jsfiddle.net/pioul/eCuNU/4/

यह स्क्रिप्ट लिंक केवल तभी लिंक एक नया टैब/विंडो में खोलने के लिए, target="_blank" विशेषता के आधार पर हो रहा है पर क्लिक करें की अनुमति देगा:

उत्तर

3

यहाँ आप एक काम कर उदाहरण है।

HTML:

<a href="http://google.fr" target="_blank">new window</a> 
<a href="http://google.fr" target="_self">same window 1</a> 
<a href="http://google.fr" target="">same window 2</a> 

jQuery:

$("a").bind("click", function(e){ 
    if($(this).attr("target") != "_blank"){ 
     e.preventDefault(); 
    } 
}); 

संपादित करें:

आप इस तरह खाते ctrl + क्लिक के में ले जा सकते हैं:

$("a").bind("click", function(e){ 
    if($(this).attr("target") != "_blank"){ 
     if(!e.ctrlKey){ 
      e.preventDefault(); 
     } 
    } 
}); 
+1

अच्छा, यह केवल एक निश्चित लक्ष्य विशेषता के साथ काम करता है। यदि उपयोगकर्ता ctrl (या समान) को दबाकर "ओवरराइट" करता है, तो विशेषता पाठ्यक्रम में नहीं बदलेगी और इसलिए दृढ़ संकल्प विफल हो जाता है। – Remo

+1

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

0

कभी-कभी यह नए टैब में या एक ही विंडो में लिंक को खोलने के लिए ब्राउज़र सेटिंग्स द्वारा निर्धारित है।

आप लिंक वस्तु का लक्ष्य विशेषता देख सकते हैं।

<a href="http://your_link_to_page" target="_blank" >This open in new window</a> 

उपयोग जावास्क्रिप्ट पृष्ठ लोड पर लंगर टैग में हेरफेर और लक्ष्य के लिए जिम्मेदार बताते हैं की जाँच करने के। यदि लक्ष्य मान _blank पर सेट है तो उन्हें सक्षम करें या जब आप लिंक पर क्लिक करेंगे तो आप यह चेक कर सकते हैं।

आप एक तंत्र का उपयोग कर सकते हैं जब लिंक पर क्लिक होने के लिए CTRL दबाया जाता है खोजने के लिए। this जैसे कुछ संसाधन हैं। आप एक प्रणाली बना सकते हैं।

नोट: यदि आप JQuery का उपयोग कर रहे हैं तो लिंक को वर्गीकृत करने के लिए विभिन्न वर्गों का उपयोग करें। और उन्हें तैयार राज्य पर अक्षम करें या समय पर लिंक क्लिक किए जाते हैं।

+0

दुर्भाग्यवश, यह तब भी लागू नहीं होता है जब उपयोगकर्ता 'ctrl' दबाकर एक नया टैब मजबूर करता है, है ना? – Remo

+0

आपको पहले पता लगाना होगा कि माउस डाउन इवेंट कब हुआ था जब कुंजी दबाई जाती है। यह चेक वैश्विक दायरे में किया जाना है (यानी, पृष्ठ के दायरे में)। कुंजी प्रेस के आधार पर एक जेएस चर सेट करें। फिर क्लिक ईवेंट के अंदर बाकी की जांच करें। –

0

आप एक नया टैब या विंडो में एक लिंक को खोलने के लिए एक ब्राउज़र नहीं रोका जा सकता। हो सकता है कि (ज्ञानी नहीं) कॉन्फ़िगरेशन सेटिंग्स जो बल दें, या माउस जेस्चर के बारे में सोचें: दायां क्लिक करें और नीचे जाने से ओपेरा में एक नया टैब खुल जाएगा, और मुझे लगता है कि यह ज्ञानी नहीं है।

इसके अलावा, एक ब्राउज़र को एक नई विंडो में एक टैब खोलने के लिए मजबूर करना (target="_blank" या यहां तक ​​कि window.open) खराब शैली माना जाता है। आपको उपयोगकर्ता को वह चुनना चाहिए जो वह करना चाहता है। यदि आप वास्तव में करना चाहते हैं, तो आप window.onunload पर भी विचार कर सकते हैं जो अधिकतर काम करना चाहिए।

+0

ठीक है, यह किसी भी चीज़ को रोकने या मजबूर करने के बारे में नहीं है - यह लगभग ** पता लगा रहा है ** क्या लिंक एक नई विंडो में खुल जाएगा या नहीं - यह सब कुछ है। – Remo

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