2012-01-17 13 views
10

मैं पृष्ठों के साथ नेविगेशन करता हूं लेकिन यह कोड काम नहीं करता है, समस्या क्या है?window.location.replace() ब्राउज़र को रीडायरेक्ट करने के लिए काम नहीं कर रहा है

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    window.location.replace("http://newsii.abudayah.com/photo/2)"; } 
    else if(event.keyCode == 39) { // right 
    window.location.replace("http://newsii.abudayah.com/photo/31)"; } 
}); 
}); 
</script> 
+16

कोई भी जवाब यह नहीं देखता था कि प्रत्येक यूआरएल में ब्रैकेट उद्धरण चिह्नों के अंदर है, जब इसे बाहर होने की आवश्यकता होती है। अन्यथा प्रतिस्थापन विधि का उपयोग वाक्य रचनात्मक रूप से सही है। –

उत्तर

21

इस के लिए .replace() का उपयोग न करें, बस सीधे मूल्य निर्दिष्ट।

Example

$("body").keydown(function(event) { 

    if(event.keyCode == 37) { // left 
     window.location = "http://newsii.abudayah.com/photo/2"; 
    } 
    else if(event.keyCode == 39) { // right 
     window.location = "http://newsii.abudayah.com/photo/31"; 
    } 

}); 
+4

मुझे कहना है कि jsfiddle के साथ एक जवाब के बराबर 10x के बराबर होना चाहिए। –

+0

सहमत ... जब तक यह कटाक्ष नहीं है मैं महसूस कर रहा हूँ। – jondavidjohn

+0

नहीं, यह कटाक्ष नहीं है। मैं शायद ही कभी एक jsfiddle करने के लिए समय लेता हूं, लेकिन जब मैं एक के साथ जवाब देखता हूं, मुझे लगता है कि मुझे आदत में जाना चाहिए। –

1

मैं इस का इस्तेमाल किया और यह काम

$(document).ready(function() { 

    $(document).keydown(function(e) { 
     var url = false; 
     if (e.which == 37) { // Left arrow key code 
      url = $('.prev').attr('href'); 
     } 
     else if (e.which == 39) { // Right arrow key code 
      url = $('.next').attr('href'); 
     } 
     if (url) { 
      window.location = url; 
     } 
    }); 

}); 
13

आपका कोड में सिंटेक्स त्रुटि है है। आपका अंत कोष्ठक नहीं बाहर उद्धरण के अंदर है ...

प्रयास करें:

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    window.location.replace("http://newsii.abudayah.com/photo/2"); } 
    else if(event.keyCode == 39) { // right 
    window.location.replace("http://newsii.abudayah.com/photo/31"); } 
}); 
}); 
</script> 

window.location.replace सभी ब्राउज़रों में समर्थित नहीं है। स्थान मान असाइन करना हमेशा समर्थित है। हालांकि, स्थान मान निर्दिष्ट करने के बजाय प्रतिस्थापित करने का कारण यह है कि आप वर्तमान यूआरएल इतिहास में प्रकट नहीं होना चाहते हैं, या बैक बटन का उपयोग करते समय दिखाने के लिए। चूंकि यह हमेशा संभव नहीं है, तो आप सिर्फ क्या संभव है के लिए समझौता करने की जरूरत है:

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    try { window.location.replace("http://newsii.abudayah.com/photo/2"); } 
    catch(e) { window.location = "http://newsii.abudayah.com/photo/2"; } 
    } 
    else if(event.keyCode == 39) { // right 
    try { window.location.replace("http://newsii.abudayah.com/photo/31"); } 
    catch(e) { window.location = "http://newsii.abudayah.com/photo/31"; } 
    } 
}); 
}); 
</script> 
+0

यह एक अच्छा जवाब है। फॉलबैक वास्तव में उपयोगी है। – Rivalus

2

मैं यह काम नहीं कर जब क्रोममें एक ही पृष्ठ को फिर से लोड के साथ एक समस्या हुई। ऐसा करने से काम किया है:

window.location.replace("/mypage1.aspx?type=abc"); //redirect to fake page 
    window.location.replace("/mypage.aspx?type=abc"); //redirect to same page 

यह एक हैक का एक सा है, लेकिन यह केवल एक चीज है कि क्रोम में एक ही पृष्ठ पर एक बार पुनः लोड करने के लिए मजबूर हो रहा है। आईई और एफएफ एक नकली पृष्ठ पर रीडायरेक्ट के बिना काम करते हैं।

+1

IIUC यह पहले रीडायरेक्ट पर निर्भर करता है कि तुरंत नहीं हो रहा है, इसलिए दूसरी पंक्ति दौड़ने के लिए हो जाती है। लेकिन सिद्धांत रूप में, यदि पहला वास्तव में तेज़ होता है, तो उपयोगकर्ता नकली यूआरएल पर फंस जाएगा और एक त्रुटि पृष्ठ देखेंगे। –

4

मुझे क्रोम में इससे परेशानी हो रही थी। मैं एक ही डोमेन से एक और पेज लोड करने की कोशिश कर रहा था, लेकिन एक पूर्ण यूआरएल (उदा। www.example.com/newurl) का उपयोग कर रहा था। मैंने इसे एक सापेक्ष यूआरएल (/newurl) में बदल दिया और यह अब काम करता है।

मेरा विचार यह है कि उपयोगकर्ता को कुछ जावास्क्रिप्ट विज्ञापन के माध्यम से किसी दुर्भावनापूर्ण साइट पर रीडायरेक्ट होने से रोकने के लिए यह एक सुरक्षा सुविधा है।

+0

धन्यवाद! यह मेरा मामला था! –