मेरे पास एक अनुक्रमणिका साइट है जो जांचती है कि कोई कुकी मौजूद है या नहीं और यदि उसका मान 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 else
s जोड़ता हूं, तो यह अपेक्षा के अनुरूप काम करता है:
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
पर रीडायरेक्ट हो जाता है?
2 जवाब
if
के बाद आपके पास सामान्य Javascript कथन है।
जब तक आप इसे else
में नहीं डालते, तब तक उस कथन को न चलाने के बारे में कुछ नहीं कहा जा सकता।
किसी नए पृष्ठ पर नेविगेट करने से वर्तमान पृष्ठ का निष्पादन तब तक समाप्त नहीं होता जब तक कि नया पृष्ठ वास्तव में लोड नहीं हो जाता।
संभवत: दोनों 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>
someOtherMYCOOKIE=EN
मामलों की जांच नहीं करता है।