मेरे पास एक अनुक्रमणिका साइट है जो जांचती है कि कोई कुकी मौजूद है या नहीं और यदि उसका मान EN है। यदि ऐसा है तो इसे एक अंग्रेजी index.shtml पर रीडायरेक्ट करना चाहिए। अन्यथा या यदि कोई (अंग्रेज़ी) कुकी नहीं है, तो उसे जर्मन अगले पृष्ठ पर रीडायरेक्ट करना चाहिए:

if (document.cookie)  {
    var cookieValue = document.cookie;
    if (cookieValue.indexOf("MYCOOKIE=EN") > -1)  {
        window.location.href="en/index.shtml";
    }
}
window.location.href="kategorien/hauptkategorie.shtml";

अब कुछ बहुत ही अजीब होता है: अंग्रेजी कुकी मौजूद है (मैंने जावास्क्रिप्ट अलर्ट के साथ cookieValue की जांच की और यह EN दिखाता है), लेकिन भले ही if के अंदर href निष्पादित नहीं किया जाएगा लेकिन दूसरा href निष्पादित किया जाएगा। ऐसा क्यों है?

जब मैं 2 elses जोड़ता हूं, तो यह अपेक्षा के अनुरूप काम करता है:

if (document.cookie)  {
     var cookieValue = document.cookie;
     if (cookieValue.indexOf("MYCOOKIE=EN") > -1)  {
         window.location.href="en/index.shtml";
     }
     else  {
         window.location.href="kategorien/hauptkategorie.shtml";
     }
}
else  {
     window.location.href="kategorien/hauptkategorie.shtml";
}

ऐसा क्यों है कि अगर मैं else को छोड़ दूं तो यह hauptkategorie.shtml पर रीडायरेक्ट हो जाता है?

0
Bevor 31 अक्टूबर 2011, 01:12

2 जवाब

सबसे बढ़िया उत्तर

if के बाद आपके पास सामान्य Javascript कथन है।

जब तक आप इसे else में नहीं डालते, तब तक उस कथन को न चलाने के बारे में कुछ नहीं कहा जा सकता।

किसी नए पृष्ठ पर नेविगेट करने से वर्तमान पृष्ठ का निष्पादन तब तक समाप्त नहीं होता जब तक कि नया पृष्ठ वास्तव में लोड नहीं हो जाता।

4
SLaks 31 अक्टूबर 2011, 01:20
तो क्या इसका मतलब यह है कि window.localtion.href तुरंत रीडायरेक्ट नहीं करता है?
 – 
Bevor
31 अक्टूबर 2011, 01:19
1
सही; यह निष्पादन को समाप्त नहीं करता है। यदि नया पृष्ठ धीमे सर्वर पर है तो आप पिछले पृष्ठ का उपयोग कुछ समय के लिए जारी रख सकते हैं।
 – 
SLaks
31 अक्टूबर 2011, 01:20
1
यह वास्तव में ब्राउज़र पर निर्भर करता है कि वह रीडायरेक्ट कब होता है। इसलिए ब्राउज़र इसे आसानी से तब तक विलंबित कर सकता है जब तक वह स्क्रिप्ट निष्पादन को समाप्त करना चाहता है; इसका मतलब है कि आपको वहां किसी भी चीज पर भरोसा नहीं करना चाहिए।
 – 
poke
31 अक्टूबर 2011, 01:27

संभवत: दोनों window.location.href कथन निष्पादित होते हैं, जिससे आपको अप्रत्याशित परिणाम मिलते हैं। कुछ ऐसा प्रयास करें:

<script type="text/javascript"> 
if (document.cookie && document.cookie.indexOf("MYCOOKIE=EN") > -1)  {
    window.location.href="en/index.shtml";  
}
else {
    window.location.href="kategorien/hauptkategorie.shtml";
}
</script>
3
Jeroen 31 अक्टूबर 2011, 01:22
ध्यान रखें कि यह कोड someOtherMYCOOKIE=EN मामलों की जांच नहीं करता है।
 – 
Adam Naylor
3 जिंदा 2014, 02:35