2013-02-24 11 views
9

मैं इस दिलचस्प स्थिति से मिलने से काम करते हैं:<a> लिंक पर क्लिक करके काम नहीं कर रहा, केवल "नए टैब में खोलें लिंक" कमांड

<ul> 
    @foreach (var item in Model) 
    { 
     <li> 
     <a href="@Url.Action("Details", "Product", new { id = item.Id })" >@item.Name</a> 
     </li> 
    } 
</ul> 

जब मैं एक लिंक पर क्लिक करें, कुछ भी नहीं, उत्पाद विवरण पृष्ठ खुलती नहीं है। लेकिन मैं "नए टैब में लिंक खोलें", फिर यह खुलता है। इसका कारण क्या हो सकता है?

+4

कुछ जावास्क्रिप्ट जादू। – Musa

+3

कोई भी जेएस जो आपके कोड में एंकर टैग की डिफ़ॉल्ट कार्रवाई को रोक सकता है? – Mortalus

+0

क्या आप उस रेजर व्यू के लिए जेनरेट किए गए HTML का निरीक्षण कर सकते हैं? मुझे लगता है कि यह href विशेषता में एक खाली यूआरएल उत्पन्न करने के लिए है। – ThomasArdal

उत्तर

25

आपके पास कुछ जावास्क्रिप्ट कोड है जो एंकर टैग की डिफ़ॉल्ट कार्रवाई को निष्पादित करने से रोक रहा है। जब आप लिंक पर क्लिक करते हैं तो कुछ AJAX अनुरोध किए जा रहे हैं या नहीं, यह देखने के लिए आप फ़ायरबग या क्रोम DevTools में Network टैब का निरीक्षण कर सकते हैं। आप जावास्क्रिप्ट फ़ाइलों को तब तक बाहर करने का प्रयास कर सकते हैं जब तक कि आप ऐसा नहीं कर पाते।

+8

क्रोम पर, देवटूल के पास "इवेंट श्रोताओं" नामक एक दृश्य है जो आपको ऐसे किसी भी ईवेंट हैंडलर की पहचान करने की अनुमति देता है। एक दोष यह है कि यह विरासत वाले हैंडलर नहीं दिखाता है। –

+0

पुरानी पोस्ट लेकिन उत्तर ने आज मुझे मदद की!दस्तावेज़ पर हैंडलर पर क्लिक करें 'झूठी झूठी' ... धन्यवाद! – Wildcard27

+0

प्रतिक्रिया हेडर्स को देखते हुए मुझे ट्रैक करने में मदद मिली कि एफबी द्वारा फेसबुक समूह के लिए एक साधारण लिंक क्यों अस्वीकार कर दिया गया था। धन्यवाद! – cyrf

1

इस कोड का प्रयास करें ...

<a href="http://google.com/" onclick="location.replace('http://google.com/'),'_top'">Google</a> 
2

सही ढंग से डैरेन द्वारा दिए गए, यह निश्चित रूप से कुछ जावास्क्रिप्ट कोड है कि एक AJAX अनुरोध (पोस्ट या प्राप्त) भेज रहा है कि जैसा कि आप उम्मीद करेंगे कार्य करने से रोक रहा है लिंक है ।

हालांकि, यदि आपने बाहरी संसाधन का उपयोग किया है, तो min फ़ाइलों में त्रुटि को सही करना मुश्किल हो सकता है।

मैं AJAX कॉल

<a href="http://foo.bar/" onclick="window.open('https://www.foo.bar/culrsteam')">Foo</a>

इसके अतिरिक्त आपके जैसे window.open('https://www.foo.bar/culrsteam', '_blank') इस्तेमाल कर सकते हैं target='_blank'

1

के साथ यह पता नहीं है, तो हो सकता है को दरकिनार करने का jQuery ऑनक्लिक ईवेंट इनलाइन का उपयोग करने का सुझाव href विशेषता के भीतर स्थानांतरण प्रोटोकॉल है। एक उदाहरण स्थानीयहोस्ट को <a href="localhost"></div> के रूप में <a href="http://localhost"></div> के बजाय लिंक करेगा। आप देखेंगे कि ऐसा होने पर Google क्रोम रद्द की गई स्थिति देगा, और सफारी में एक संवाद दिखाई देगा, जिसमें यह पूछता है कि लिंक किस प्रोटोकॉल को खोला जाना चाहिए, क्योंकि ट्रांसफर प्रोटोकॉल अज्ञात है। PHP में $_SERVER['HTTP_HOST'] पर लिंक सेट करते समय मुझे इस समस्या का सामना करना पड़ा।

मुख्य बिंदु यह है कि, सुनिश्चित करें कि आप लिंक के सामने स्थानांतरण प्रोटोकॉल छोड़ दें, यह http://, https://, ftp:// या अन्य कुछ भी हो।

2

शायद आपने जावास्क्रिप्ट के साथ एक टैग की पुनर्निर्देशन घटना को रोका है।

उदाहरण के लिए:

$(document).on('click', 'a.thatTag', function (e) { 
    // ... 
    e.preventDefault(); 
}); 

.preventDefault() पुनर्निर्देशन से बचाता है।

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