मैं दूसरे वेबपेज पर कैसे पुनर्निर्देशित कर सकता हूं?


7723

मैं jQuery या शुद्ध जावास्क्रिप्ट का उपयोग करके उपयोगकर्ता को एक पृष्ठ से दूसरे पृष्ठ पर कैसे पुनर्निर्देशित कर सकता हूं?


147
मैं दोनों खिड़की देखता रहता हूं। उत्थान = यूआरएल; और window.location.href = url; वे कैसे अलग हैं? क्या वो? BTW, मैं window.location.replace (url) के बारे में नहीं जानता था। अच्छा लगा।
डेविड एम। मिलर

100
window.locationरूप में ही है window.location.hrefव्यवहार के संदर्भ में,। window.locationकोई वस्तु लौटाता है। यदि .hrefसेट नहीं किया गया है, window.locationतो पैरामीटर बदलने के लिए चूक .href। निष्कर्ष: एक का उपयोग ठीक है।
रैप्टर

10
var url = "वेबसाइट का नाम" $ (स्थान) .attr ('href', url);
पागल वैज्ञानिक

31
@MadScientist यह करने के लिए एक पश्चगामी तरीका है। स्थान ऑब्जेक्ट एक HTML तत्व नहीं है और इसे गलत करने के लिए सेट करने के लिए jquery ऑब्जेक्ट का उपयोग करना गलत लगता है। आप इसका उपयोग क्यों करेंगे जब सीधा JS कोड इतना सरल है?
जुआन मेंडेस

1
आप पुनर्निर्देशन क्यों करना चाहते हैं? लॉगिन फॉर्म जमा नहीं करना चाहिए? और भले ही लक्ष्य पृष्ठ में कोई तर्क न हो, फिर भी आप दूसरे पृष्ठ पर फ़ॉर्म जमा कर सकेंगे।
डिम्ट

जवाबों:


14803

एक बस jQuery का उपयोग करके पुनर्निर्देशित नहीं करता है

jQuery आवश्यक नहीं है, और window.location.replace(...)सबसे अच्छा एक HTTP पुनर्निर्देशित अनुकरण करेगा।

window.location.replace(...)उपयोग करने से बेहतर है window.location.href, क्योंकि replace()सत्र के इतिहास में मूल पृष्ठ नहीं रखता है, जिसका अर्थ है कि उपयोगकर्ता कभी भी समाप्त न होने वाले बैक-बटन फ़ैसको में फंस नहीं जाएगा।

यदि आप किसी लिंक पर क्लिक करने वाले व्यक्ति का अनुकरण करना चाहते हैं, तो उपयोग करें location.href

यदि आप एक HTTP रीडायरेक्ट का अनुकरण करना चाहते हैं, तो उपयोग करें location.replace

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

// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");

// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

// Another method for doing redirecting with JavaScript is this:
window.location = "https://stackoverflow.com";

78
सबमिट बटन के मामले में रिटर्न गलत जोड़ें; अपने कार्य के अंदर भी
अभि

134
यह प्रश्न विशेष रूप से जावास्क्रिप्ट के बारे में है, लेकिन यह ध्यान देने योग्य हो सकता है कि एक मेटा रीफ्रेश का उपयोग एक असफल बैक के रूप में किया जा सकता है, जब उपयोगकर्ता ने जावास्क्रिप्ट को अक्षम कर दिया हो
Hoppe

22
@ Nicol.Martini if ​​(IE) document.write ("");
जेफ नोएल

48
यदि आप पहले से ही jQuery का उपयोग कर रहे हैं, तो उपयोग करें $(location).attr('href',url);window.location.hrefलगता है कि कुछ ब्राउज़रों में अनिश्चित व्यवहार होता है, वास्तव में, यह फ़ायरफ़ॉक्स के मेरे संस्करण में काम नहीं करता है। मैंने window.locationIE के संस्करणों में सीधे काम नहीं करने की सेटिंग के बारे में सुना है ।
Noz

8
"बेहतर है" हटा दिया जाना चाहिए। जैसा कि उत्तर में बाद में कहा गया है, सबसे अच्छा समाधान स्थितिजन्य है। ओपी यह नहीं पूछता है कि "मैं जावास्क्रिप्ट के साथ एक HTTP पुनर्निर्देशन का अनुकरण कैसे कर सकता हूं ..."
MadMaardigan

1684

चेतावनी: यह उत्तर केवल एक संभावित समाधान के रूप में प्रदान किया गया है; यह स्पष्ट रूप से है सबसे अच्छा समाधान है, क्योंकि यह jQuery की आवश्यकता है। इसके बजाय, शुद्ध जावास्क्रिप्ट समाधान पसंद करते हैं।

$(location).attr('href', 'http://stackoverflow.com')

63
यह सवाल का शाब्दिक उत्तर है। यदि आप पहले से ही Jquery का उपयोग कर रहे हैं और इसलिए यह पहले से ही लोड है, तो यह अधिक बैंडविड्थ कुशल और निश्चित रूप से शॉर्टकट का उपयोग करने के लिए स्पष्ट होगा
barrymac

27
इससे भी महत्वपूर्ण बात, वहाँ jQuery के साथ ऐसा करने का एक तरीका है जो अनुपस्थित है? यह सिर्फ window.location.href = url के लिए एक आवरण है; लेकिन अगर jQuery के पास कुछ फ़ंक्शन था, अगर window.location.href = url; वर्तमान वातावरण (ब्राउज़र, OS, आदि) में काम नहीं करने जा रहा था jQuery कोर क्षतिपूर्ति कर सकता है?
क्रिस

271
इस तरह से समीकरण में मजबूरन jQuery सिर्फ हास्यास्पद और व्यर्थ है, खासकर जब window.locationसे एक तत्व नहीं है और इसलिए इसमें विशेषताएं नहीं हैं।
टिम डाउन

10
मैं किसी भी तरह यह संदेह अभी भी हाल ही में jQuery के संस्करणों के साथ काम करता है, जहां .attr()वास्तव में विशेषताएँ सेट करता है (यानी .setAttribute())
ThiefMaster

156
@deltaray यह पुनर्निर्देशित करने का दूसरा तरीका नहीं है , जैसा कि ऊपर कहा गया है, यह स्थान ऑब्जेक्ट के चारों ओर एक अर्थहीन आवरण है, जो कि एक तत्व भी नहीं है! यह मुझे i.stack.imgur.com/ssRUr.gif
JCM

675

किसी पृष्ठ को पुनर्निर्देशित करने के लिए मानक "वेनिला" जावास्क्रिप्ट तरीका

window.location.href = 'newPage.html';

या अधिक बस: (चूंकि windowग्लोबल है)

location.href = 'newPage.html';

यदि आप यहां हैं क्योंकि पुनर्निर्देशन के दौरान आप HTTP_REFERER खो रहे हैं , तो पढ़ते रहें:

(अन्यथा इस अंतिम भाग की उपेक्षा करें)


निम्नलिखित अनुभाग HTTP_REFERERकई सुरक्षा उपायों में से एक के रूप में उपयोग करने वालों के लिए है (हालांकि यह एक महान सुरक्षात्मक उपाय नहीं है)। यदि आप Internet Explorer 8 या उससे कम का उपयोग कर रहे हैं , तो ये चर जावास्क्रिप्ट पेज पुनर्निर्देशन (स्थान.शहर, आदि) के किसी भी रूप का उपयोग करते समय खो जाते हैं।

नीचे हम IE8 और लोअर के लिए एक विकल्प लागू करने जा रहे हैं ताकि हम HTTP_REFERER न खोएं। अन्यथा, आप लगभग हमेशा बस उपयोग कर सकते हैं window.location.href

HTTP_REFERER(URL चिपकाने, सत्र, आदि) के खिलाफ परीक्षण यह बताने में मदद कर सकता है कि क्या कोई अनुरोध वैध है। ( नोट: इन रेफ़रर्स के काम करने के आस-पास / बिगाड़ने के तरीके भी हैं, जैसा कि टिप्पणियों में droop के लिंक द्वारा दिया गया है)


सरल क्रॉस-ब्राउज़र परीक्षण समाधान (इंटरनेट एक्सप्लोरर 9+ और अन्य सभी ब्राउज़रों के लिए window.location.href पर वापसी)

उपयोग: redirect('anotherpage.aspx');

function redirect (url) {
    var ua        = navigator.userAgent.toLowerCase(),
        isIE      = ua.indexOf('msie') !== -1,
        version   = parseInt(ua.substr(4, 2), 10);

    // Internet Explorer 8 and lower
    if (isIE && version < 9) {
        var link = document.createElement('a');
        link.href = url;
        document.body.appendChild(link);
        link.click();
    }

    // All other browsers can use the standard window.location.href (they don't lose HTTP_REFERER like Internet Explorer 8 & lower does)
    else { 
        window.location.href = url; 
    }
}

60
पैर नोट: एक सुरक्षा उपाय के रूप में रेफरल के लिए जाँच एक घटिया समाधान है। duckduckgo.com/?q=referrer+spoofing
droope

यदि आपके पास रेफ़रर URL में HTTP GET सेशन आईडी है, तो इसका उपयोग यह जांचने के लिए किया जा सकता है कि वैधता के लिए सत्र के खिलाफ।
एंड्रयू फॉक्स

@mcpDESIGNS क्या आप सुनिश्चित हैं कि आपने उपयोग करने की कोशिश की है location.assign? मैं IE8 के साथ अपने ऐप में उपयोग करता हूं, और मैं HTTP_REFERERहेडर नहीं खोता हूं ।
बूजिनास

2012 में कम से कम वापस काम नहीं कर रहा था, शायद बाद में IE8 के पैच ने इसे ठीक कर दिया - हालांकि यह सुनना अच्छा है!
मार्क पिज़्ज़ाक - ट्रिलोन

1
HTTP_REFERER के आपके उल्लेख ने मुझे विंडो के साथ होने वाली समस्या को समझने में मदद की। मुझे और मुझे यहाँ एक समाधान मिला: stackoverflow.com/questions/7580613/… । वैसे मैं IE11 में समस्या हो रही है!
डोवर मिलर

427

ऐसा करने के बहुत सारे तरीके हैं।

// window.location
window.location.replace('http://www.example.com')
window.location.assign('http://www.example.com')
window.location.href = 'http://www.example.com'
document.location.href = '/path'

// window.history
window.history.back()
window.history.go(-1)

// window.navigate; ONLY for old versions of Internet Explorer
window.navigate('top.jsp')


// Probably no bueno
self.location = 'http://www.example.com';
top.location = 'http://www.example.com';

// jQuery
$(location).attr('href','http://www.example.com')
$(window).attr('location','http://www.example.com')
$(location).prop('href', 'http://www.example.com')

8
window.navigateपुराना-IE-only (फ़ायरफ़ॉक्स / क्रोम इसका समर्थन नहीं करता है)। यदि आप सभी विकल्पों की गणना करना चाहते हैं, तो मत भूलिए document.location
रोब डब्ल्यू

document.location = document.referrer; कृपया इसे सूची में भी जोड़ें। यह History.back की तरह काम नहीं करता है बल्कि पेज को फिर से ताज़ा करता है।
अली हुमायूँ

.attr () jQuery 3.0.0 पर काम नहीं करेगा। इसके बजाय .val () का उपयोग करें।
रिवलस

4
@ LéoLam यही कारण है कि Google नामक एक खोज इंजन है। :-) आप प्रत्येक को Google पर खोज सकते हैं और अंतर पा सकते हैं। आप एक बेतरतीब ढंग से नहीं चुनना चाहते हैं।
मैं

तुम भी डॉक्स देख सकता था, developer.mozilla.org/en-US/docs/Web/API/Location
जॉन Balvin एरियस

330

यह हर ब्राउज़र के लिए काम करता है:

window.location.href = 'your_url';

8
आप यह भी कर सकते हैं document.location.replace(redirectURL)यदि आप नहीं चाहते कि पहला पृष्ठ ब्राउज़र इतिहास में हो
jazzcat

298

यदि आप जो करने की कोशिश कर रहे हैं उसमें थोड़ा और वर्णनात्मक होने पर मदद मिलेगी। यदि आप पृष्ठांकित डेटा जनरेट करने का प्रयास कर रहे हैं, तो कुछ विकल्प हैं कि आप यह कैसे करते हैं। आप प्रत्येक पृष्ठ के लिए अलग लिंक उत्पन्न कर सकते हैं जिसे आप सीधे प्राप्त करने में सक्षम होना चाहते हैं।

<a href='/path-to-page?page=1' class='pager-link'>1</a>
<a href='/path-to-page?page=2' class='pager-link'>2</a>
<span class='pager-link current-page'>3</a>
...

ध्यान दें कि उदाहरण में वर्तमान पृष्ठ कोड में और CSS के साथ अलग तरीके से संभाला गया है।

यदि आप चाहते हैं कि पृष्ठांकित डेटा को AJAX के माध्यम से बदल दिया जाए, तो यह वह जगह है जहाँ jQuery आएगा। आप क्या करेंगे जो प्रत्येक एंकर टैग में एक अलग पृष्ठ के लिए एक क्लिक हैंडलर जोड़ देगा। यह क्लिक हैंडलर कुछ jQuery कोड का आह्वान करता है जो AJAX के माध्यम से अगले पेज पर जाता है और नए डेटा के साथ तालिका को अपडेट करता है। नीचे दिया गया उदाहरण मानता है कि आपके पास एक वेब सेवा है जो नया पृष्ठ डेटा लौटाती है।

$(document).ready( function() {
    $('a.pager-link').click( function() {
        var page = $(this).attr('href').split(/\?/)[1];
        $.ajax({
            type: 'POST',
            url: '/path-to-service',
            data: page,
            success: function(content) {
               $('#myTable').html(content);  // replace
            }
        });
        return false; // to stop link
    });
});

252

मुझे यह भी लगता है कि location.replace(URL)यह सबसे अच्छा तरीका है, लेकिन अगर आप खोज इंजन को अपने पुनर्निर्देशन के बारे में सूचित करना चाहते हैं (वे रीडायरेक्ट को देखने के लिए जावास्क्रिप्ट कोड का विश्लेषण नहीं करते हैं) तो आपको rel="canonical"अपनी वेबसाइट पर मेटा टैग जोड़ना चाहिए ।

इसमें HTML रिफ्रेश मेटा टैग के साथ एक नास्क्रिप्ट सेक्शन को जोड़ना भी एक अच्छा उपाय है। मैं आपको पुनर्निर्देशन बनाने के लिए इस जावास्क्रिप्ट पुनर्निर्देशन उपकरण का उपयोग करने का सुझाव देता हूं । HTTP रेफ़रर को पास करने के लिए इसमें Internet Explorer समर्थन भी है।

बिना देरी के नमूना कोड इस तरह दिखता है:

<!-- Place this snippet right after opening the head tag to make it work properly -->

<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->

<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://yourdomain.com/"/>
<noscript>
    <meta http-equiv="refresh" content="0;URL=https://yourdomain.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
    var url = "https://yourdomain.com/";
    if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
    {
        document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
        var referLink = document.createElement("a");
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    }
    else { window.location.replace(url); } // All other browsers
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->

228

लेकिन अगर कोई होम पेज पर वापस जाना चाहता है तो वह निम्नलिखित स्निपेट का उपयोग कर सकता है।

window.location = window.location.host

यह उपयोगी होगा यदि आपके पास विकास, मंचन और उत्पादन के रूप में तीन अलग-अलग वातावरण हैं।

आप केवल क्रोम कंसोल या फायरबग के कंसोल में इन शब्दों को डालकर इस विंडो या window.location ऑब्जेक्ट का पता लगा सकते हैं ।


window.location.replace (window.location.protocol + "//" + window.location.host)
moala

13
और भी सरल: window.location = '/'
इफ्ता

213

जावास्क्रिप्ट आपको वर्तमान URL को पुनः प्राप्त करने और बदलने के लिए कई तरीके प्रदान करता है जो ब्राउज़र के पता बार में प्रदर्शित होता है। ये सभी विधियाँ स्थान ऑब्जेक्ट का उपयोग करती हैं, जो विंडो ऑब्जेक्ट की एक संपत्ति है। आप एक नया स्थान ऑब्जेक्ट बना सकते हैं जिसमें वर्तमान URL निम्नानुसार है ..

var currentLocation = window.location;

किसी URL की मूल संरचना

<protocol>//<hostname>:<port>/<pathname><search><hash>

यहां छवि विवरण दर्ज करें

  1. प्रोटोकॉल - इंटरनेट पर संसाधन तक पहुंचने के लिए प्रोटोकॉल नाम का उपयोग किया जाता है। (HTTP (SSL के बिना) या HTTPS (SSL के साथ))

  2. hostname - होस्ट नाम उस होस्ट को निर्दिष्ट करता है जो संसाधन का मालिक है। उदाहरण के लिए, www.stackoverflow.com। एक सर्वर होस्ट के नाम का उपयोग करके सेवाएं प्रदान करता है।

  3. port - किसी विशिष्ट प्रक्रिया को पहचानने के लिए उपयोग किया जाने वाला एक पोर्ट नंबर, जिसके लिए इंटरनेट या अन्य नेटवर्क संदेश को सर्वर पर आने पर आगे भेजना होता है।

  4. pathname - पथ होस्ट के भीतर विशिष्ट संसाधन के बारे में जानकारी देता है जिसे वेब क्लाइंट एक्सेस करना चाहता है। उदाहरण के लिए, stackoverflow.com/index.html।

  5. क्वेरी - एक क्वेरी स्ट्रिंग पथ घटक का अनुसरण करता है, और एक ऐसी जानकारी प्रदान करता है जिसे संसाधन किसी उद्देश्य के लिए उपयोग कर सकता है (उदाहरण के लिए, खोज के लिए पैरामीटर या संसाधित किए जाने वाले डेटा के रूप में)।

  6. हैश - किसी URL का एंकर भाग, हैश साइन (#) शामिल करता है।

इन स्थान ऑब्जेक्ट गुणों के साथ आप इन सभी URL घटकों तक पहुँच सकते हैं

  1. hash -Sets या किसी URL का एंकर भाग लौटाता है।
  2. host -Sets या URL का hostname और port लौटाता है।
  3. hostname -Sets या URL का hostname वापस करता है।
  4. href -Sets या रिटर्न पूरे यूआरएल।
  5. pathname -Sets या URL का पथ नाम देता है।
  6. पोर्ट -Sets या पोर्ट नंबर का उपयोग करता है जो सर्वर URL के लिए उपयोग करता है।
  7. प्रोटोकॉल -Sets या URL का प्रोटोकॉल लौटाता है।
  8. खोज -Sets या किसी URL का क्वेरी भाग लौटाता है

अब यदि आप किसी पृष्ठ को बदलना चाहते हैं या उपयोगकर्ता को किसी अन्य पृष्ठ पर पुनर्निर्देशित करना चाहते हैं तो आप hrefइस तरह के स्थान ऑब्जेक्ट की संपत्ति का उपयोग कर सकते हैं

आप स्थान ऑब्जेक्ट की href प्रॉपर्टी का उपयोग कर सकते हैं।

window.location.href = "http://www.stackoverflow.com";

लोकेशन ऑब्जेक्ट के भी ये तीन तरीके हैं

  1. असाइन () - एक नया दस्तावेज़ लोड करता है।
  2. पुनः लोड () - वर्तमान दस्तावेज़ पुनः लोड करें।
  3. प्रतिस्थापित () - वर्तमान दस्तावेज़ को एक नए के साथ बदल देता है

आप इन जैसे अन्य पृष्ठों पर पुनर्निर्देशित करने के लिए असाइन () और रिप्लेसमेंट विधियों का भी उपयोग कर सकते हैं

location.assign("http://www.stackoverflow.com");

location.replace("http://www.stackoverflow.com");

कैसे असाइन करें () और बदलें () भिन्न हैं - प्रतिस्थापित () विधि और असाइन () विधि के बीच का अंतर यह है कि दस्तावेज़ इतिहास से वर्तमान दस्तावेज़ के URL को हटा देता है, इसका मतलब है कि इसका उपयोग करना संभव नहीं है मूल दस्तावेज़ पर वापस नेविगेट करने के लिए "बैक" बटन। इसलिए यदि आप किसी नए दस्तावेज़ को लोड करना चाहते हैं, तो मूल दस्तावेज़ में वापस नेविगेट करने का विकल्प देने के लिए असाइन () पद्धति का उपयोग करें।

आप इस तरह से jQuery का उपयोग कर स्थान वस्तु href संपत्ति बदल सकते हैं

$(location).attr('href',url);

और इसलिए आप उपयोगकर्ता को कुछ अन्य यूआरएल पर पुनर्निर्देशित कर सकते हैं।


203

मूल रूप से jQuery सिर्फ एक जावास्क्रिप्ट फ्रेमवर्क है और इस मामले में पुनर्निर्देशन जैसी कुछ चीजों को करने के लिए , आप सिर्फ शुद्ध जावास्क्रिप्ट का उपयोग कर सकते हैं, इसलिए उस स्थिति में आपके पास वेनिला जावास्क्रिप्ट का उपयोग करने के 3 विकल्प हैं:

1) स्थान बदलने का उपयोग करना , यह पृष्ठ के वर्तमान इतिहास को बदल देगा, इसका मतलब है कि मूल पृष्ठ पर वापस जाने के लिए बैक बटन का उपयोग करना संभव नहीं है ।

window.location.replace("http://stackoverflow.com");

2) स्थान असाइन का उपयोग करना , यह आपके लिए इतिहास रखेगा और बैक बटन का उपयोग करने के साथ, आप मूल पृष्ठ पर वापस जा सकते हैं:

window.location.assign("http://stackoverflow.com");

3) मैं उन पिछले तरीकों में से एक का उपयोग करने की सलाह देता हूं, लेकिन शुद्ध जावास्क्रिप्ट का उपयोग करके यह तीसरा विकल्प हो सकता है:

window.location.href="http://stackoverflow.com";

आप इसे संभालने के लिए jQuery में एक फ़ंक्शन भी लिख सकते हैं, लेकिन अनुशंसित नहीं है क्योंकि यह केवल एक पंक्ति शुद्ध जावास्क्रिप्ट फ़ंक्शन है, आप खिड़की के बिना उपरोक्त सभी कार्यों का उपयोग कर सकते हैं यदि आप पहले से ही खिड़की के दायरे में हैं, उदाहरण के लिए window.location.replace("http://stackoverflow.com");हो सकता हैlocation.replace("http://stackoverflow.com");

इसके अलावा, मैं उन्हें नीचे दी गई छवि पर दिखाता हूं:

location.replace location.assign


1
मैं बहुत assign()अधिक उपयोग करने की सलाह देता हूं href=क्योंकि कुछ मामलों में बाद वाले ने मेरे लिए ठीक से काम नहीं किया।
मंगल


169

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

Jquery.com का एक उद्धरण:

हालांकि jQuery पुराने ब्राउज़र संस्करणों में प्रमुख मुद्दों के बिना चल सकता है, हम उनमें सक्रिय रूप से jQuery का परीक्षण नहीं करते हैं और आम तौर पर उन बगों को ठीक नहीं करते हैं जो उनमें दिखाई दे सकते हैं।

यह यहाँ पाया गया था: https://jquery.com/browser-support/

तो jQuery एक अंत-सब नहीं है और पीछे की संगतता के लिए सभी समाधान हो।

कच्चे जावास्क्रिप्ट का उपयोग करते हुए निम्नलिखित समाधान सभी ब्राउज़रों में काम करता है और लंबे समय से मानक है, इसलिए आपको क्रॉस ब्राउज़र समर्थन के लिए किसी भी लाइब्रेरी की आवश्यकता नहीं है।

यह पृष्ठ 3000 मिलीसेकंड के बाद Google पर पुनर्निर्देशित हो जाएगा

<!DOCTYPE html>
<html>
    <head>
        <title>example</title>
    </head>
    <body>
        <p>You will be redirected to google shortly.</p>
        <script>
            setTimeout(function(){
                window.location.href="http://www.google.com"; // The URL that will be redirected too.
            }, 3000); // The bigger the number the longer the delay.
        </script>
    </body>
</html>

विभिन्न विकल्प इस प्रकार हैं:

window.location.href="url"; // Simulates normal navigation to a new page
window.location.replace("url"); // Removes current URL from history and replaces it with a new URL
window.location.assign("url"); // Adds new URL to the history stack and redirects to the new URL

window.history.back(); // Simulates a back button click
window.history.go(-1); // Simulates a back button click
window.history.back(-1); // Simulates a back button click
window.navigate("page.html"); // Same as window.location="url"

प्रतिस्थापन का उपयोग करते समय, बैक बटन रीडायरेक्ट पृष्ठ पर वापस नहीं जाएगा, जैसे कि वह इतिहास में कभी नहीं था। यदि आप चाहते हैं कि उपयोगकर्ता पुनर्निर्देशित पृष्ठ पर वापस जाने में सक्षम हो तो उपयोग करें window.location.hrefया window.location.assign। यदि आप एक विकल्प का उपयोग करते हैं जो उपयोगकर्ता को पुनर्निर्देशित पृष्ठ पर वापस जाने की अनुमति देता है, तो याद रखें कि जब आप पुनर्निर्देशित पृष्ठ में प्रवेश करते हैं तो यह वापस रीडायरेक्ट करेगा। तो अपने पुनर्निर्देश के लिए एक विकल्प चुनने पर विचार करें। उन परिस्थितियों में जहां पृष्ठ केवल पुनर्निर्देशित होता है जब उपयोगकर्ता द्वारा कोई कार्रवाई की जाती है तो पृष्ठ के पीछे बटन इतिहास में होना ठीक होगा। लेकिन अगर पेज ऑटो रिडायरेक्ट करता है तो आपको रिप्लेस का उपयोग करना चाहिए ताकि उपयोगकर्ता बैक बटन का उपयोग बिना रीडायरेक्ट किए हुए पेज पर वापस जाने के लिए कर सके।

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

मेटा रीफ्रेश

<meta http-equiv="refresh" content="0;url=http://evil.com/" />

मेटा स्थान

<meta http-equiv="location" content="URL=http://evil.com" />

आधार अपहरण

<base href="http://evil.com/" />

अपने अनसुने क्लाइंट को एक पृष्ठ पर पुनर्निर्देशित करने की कई और विधियाँ, वे इस पृष्ठ पर नहीं जा सकते हैं (उनमें से कोई भी jQuery पर निर्भर नहीं है):

https://code.google.com/p/html5security/wiki/RedirectionMethods

मैं यह भी कहना चाहूंगा कि लोग बेतरतीब ढंग से पुनर्निर्देशित होना पसंद नहीं करते हैं। जब जरूरत हो तभी लोगों को पुनर्निर्देशित करें। यदि आप लोगों को यादृच्छिक रूप से पुनर्निर्देशित करना शुरू करते हैं तो वे आपकी साइट पर फिर कभी नहीं जाएंगे।

अगला पैराग्राफ काल्पनिक है:

आपको दुर्भावनापूर्ण साइट के रूप में भी रिपोर्ट किया जा सकता है। यदि ऐसा होता है तो जब लोग आपकी साइट के लिंक पर क्लिक करते हैं तो उपयोगकर्ता ब्राउज़र उन्हें चेतावनी दे सकता है कि आपकी साइट दुर्भावनापूर्ण है। क्या हो सकता है कि खोज इंजन आपकी रेटिंग को छोड़ना शुरू कर दे, यदि लोग आपकी साइट पर किसी बुरे अनुभव की सूचना दे रहे हैं।

कृपया पुनर्निर्देशन के बारे में Google वेबमास्टर दिशानिर्देशों की समीक्षा करें: https://support.google.com/webmasters/answer/2721217?hl=hi&ref_topic=6001971

यहां एक मजेदार छोटा पृष्ठ है जो आपको पृष्ठ से बाहर निकालता है।

<!DOCTYPE html>
<html>
    <head>
        <title>Go Away</title>
    </head>
    <body>
        <h1>Go Away</h1>
        <script>
            setTimeout(function(){
                window.history.back();
            }, 3000);
        </script>
    </body>
</html>

यदि आप दो पृष्ठ के उदाहरणों को एक साथ जोड़ते हैं, तो आपके पास पुनर्मूल्यांकन का एक शिशु लूप होगा जो इस बात की गारंटी देगा कि आपका उपयोगकर्ता कभी भी आपकी साइट का उपयोग कभी नहीं करना चाहेगा।


5
मैंने jQuery के लिए उनके अनुरोध को यह कहकर संबोधित किया कि इसकी आवश्यकता नहीं है। जावास्क्रिप्ट के लिए JQuery के पास बहुत सारे उपयोगी शॉर्टकट हैं लेकिन रीडायरेक्ट के लिए किसी शॉर्टकट की कोई आवश्यकता नहीं है। JQuery सिर्फ जावास्क्रिप्ट है। और कुछ नहीं। रीडायरेक्ट कॉल करने का सामान्य तरीका jQuery का उपयोग करके अपने कार्यों के साथ काम करेगा।
पैट्रिक डब्ल्यू मैकमोहन


145

आप ऐसा बिना jQuery के कर सकते हैं:

window.location = "http://yourdomain.com";

और अगर आप केवल jQuery चाहते हैं तो आप इसे पसंद कर सकते हैं:

$jq(window).attr("location","http://yourdomain.com");

JQuery यकीनन एक बेहतर विचार है क्योंकि यह भविष्य के ब्राउज़र में बदलाव /
अवक्षेपणों को

@Epirocks अगर इसके लिए डिज़ाइन किए गए jQuery में कोई API था, तो यह एक वैध कारण हो सकता है (इसके अलावा यह एपीआई कभी भी बदल जाएगा, यह संदिग्ध है), लेकिन यहां उदाहरण सिर्फ jQuery की एक सुविधा का दुरुपयोग है जहां आप गैर-डोम ऑब्जेक्ट्स और रैप कर सकते हैं कुछ तरीके अभी भी काम करेंगे।
1j01

यह तथ्य कि 'कुछ विधियाँ अभी भी काम करेंगी' का ठीक वही अर्थ है जो मुझे अमूर्त करने से है। हाँ, आप इसे JQuery के बिना कर सकते हैं, लेकिन आप JQuery के बिना कुछ भी कर सकते हैं यह बिंदु के अलावा है।
एपिरोक्स

144

यह jQuery के साथ काम करता है:

$(window).attr("location", "http://google.fr");

सिर्फ इसलिए कि यह काम करता है, इसका मतलब यह नहीं है कि आपको यह करना चाहिए। यह सेटिंग के चारों ओर एक अप्रत्यक्ष अप्रत्यक्ष हैwindow.location
1j01

89

# HTML पेज रीडायरेक्ट jQuery / जावास्क्रिप्ट का उपयोग कर

इस उदाहरण कोड का प्रयास करें:

function YourJavaScriptFunction()
{
    var i = $('#login').val();
    if (i == 'login')
        window.location = "login.php";
    else
        window.location = "Logout.php";
}

यदि आप के रूप में एक पूर्ण URL देना चाहते हैं window.location = "www.google.co.in";


"JQuery का उपयोग करना" उम, गलत है। और पूर्ण URL का उपयोग करने का उदाहरण काम नहीं करेगा, क्योंकि यह पूर्ण URL नहीं है। कोई प्रोटोकॉल नहीं है, इसलिए इसे एक रिश्तेदार URL के रूप में व्याख्या किया जाएगा।
1j01

80

आपको यह कोड अपने कोड में डालना होगा:

$(location).attr("href","http://stackoverflow.com");

यदि आपके पास jQuery नहीं है, तो जावास्क्रिप्ट के साथ जाएं:

window.location.replace("http://stackoverflow.com");
window.location.href("http://stackoverflow.com");

80

मूल प्रश्न: "jQuery का उपयोग कैसे पुनर्निर्देशित करें?", इसलिए उत्तर लागू होता है jQuery >> मानार्थ उपयोग मामला।


केवल जावास्क्रिप्ट के साथ एक पृष्ठ पर पुनर्निर्देशित करने के लिए:

window.location.href = "/contact/";

या अगर आपको देरी की आवश्यकता है:

setTimeout(function () {
  window.location.href = "/contact/";
}, 2000);   // Time in milliseconds

jQuery आपको आसानी से वेब पेज से तत्वों का चयन करने की अनुमति देता है। आप एक पृष्ठ पर अपनी इच्छित चीज़ पा सकते हैं और फिर विशेष प्रभावों को जोड़ने के लिए jQuery का उपयोग कर सकते हैं, उपयोगकर्ता के कार्यों पर प्रतिक्रिया कर सकते हैं, या आपके द्वारा चयनित तत्व के अंदर या बाहर सामग्री दिखा या छिपा सकते हैं। ये सभी कार्य किसी तत्व या किसी घटना का चयन करने के तरीके को जानने के साथ शुरू होते हैं ।

$('a,img').on('click',function(e){
  e.preventDefault();
  $(this).animate({
    opacity: 0 //Put some CSS animation here
  }, 500);
  setTimeout(function(){
    // OK, finished jQuery staff, let's go redirect
    window.location.href = "/contact/";
  },500);
});

कल्पना कीजिए कि किसी ने कोड की 10000 लाइनों के साथ एक स्क्रिप्ट / प्लगइन लिखा है। JQuery के साथ आप इस कोड को सिर्फ एक या दो लाइन से जोड़ सकते हैं।


जावास्क्रिप्ट हेडर: क्या इसके बजाय सेकंड में समय करना संभव है?
पायथनमास्टर202

79

तो, सवाल यह है कि रीडायरेक्ट पेज कैसे बनाया जाए, न कि किसी वेबसाइट पर रीडायरेक्ट कैसे किया जाए?

इसके लिए आपको केवल जावास्क्रिप्ट का उपयोग करना होगा। यहां कुछ छोटे कोड हैं जो एक गतिशील रीडायरेक्ट पेज बनाएंगे।

<script>
    var url = window.location.search.split('url=')[1]; // Get the URL after ?url=
    if( url ) window.location.replace(url);
</script>

तो कहते हैं कि आप इस स्निपेट को redirect/index.htmlअपनी वेबसाइट पर एक फ़ाइल में डाल सकते हैं, आप इसका उपयोग कर सकते हैं।

http://www.mywebsite.com/redirect?url=http://stackoverflow.com

और अगर आप उस लिंक पर जाते हैं, तो यह स्वचालित रूप से आपको stackoverflow.com पर रीडायरेक्ट कर देगा ।

प्रलेखन के लिए लिंक

और यह है कि आप जावास्क्रिप्ट के साथ एक सरल रीडायरेक्ट पृष्ठ कैसे बनाते हैं

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

इसमें भी एक बात ध्यान देने वाली है। मैंने window.location.replaceअपने कोड में जोड़ा है क्योंकि मुझे लगता है कि यह एक रीडायरेक्ट पेज पर सूट करता है, लेकिन, आपको पता होना चाहिए कि उपयोग करते समय window.location.replaceऔर आप रीडायरेक्ट हो जाते हैं, जब आप अपने ब्राउज़र में बैक बटन दबाते हैं तो यह नहीं होगा रीडायरेक्ट पेज पर वापस , और यह होगा इसके पहले पृष्ठ पर वापस जाएं, इस छोटी सी डेमो चीज़ पर एक नज़र डालें।

उदाहरण:

प्रक्रिया: स्टोर होम => रीडायरेक्ट पेज को google => google पर

जब Google पर: google => ब्राउज़र में बैक बटन = होम स्टोर करें

इसलिए, यदि यह आपकी आवश्यकताओं के अनुरूप है तो सब कुछ ठीक होना चाहिए। यदि आप इसे बदलने के लिए ब्राउज़र इतिहास में पुनर्निर्देशित पृष्ठ को शामिल करना चाहते हैं

if( url ) window.location.replace(url);

साथ में

if( url ) window.location.href = url;

74

अपने क्लिक फ़ंक्शन पर, बस जोड़ें:

window.location.href = "The URL where you want to redirect";
$('#id').click(function(){
    window.location.href = "http://www.google.com";
});


57

jQuery की जरूरत नहीं है तुम यह केर सकते हो:

window.open("URL","_self","","")

यह इतना आसान है!

HTTP अनुरोध आरंभ करने का सबसे अच्छा तरीका है document.loacation.href.replace('URL')


52

पहले ठीक से लिखो। आप किसी अन्य लिंक के लिए अपने एप्लिकेशन से किसी अन्य लिंक के लिए एक एप्लिकेशन के भीतर नेविगेट करना चाहते हैं। यहाँ कोड है:

window.location.href = "http://www.google.com";

और अगर आप अपने आवेदन के भीतर पृष्ठों को नेविगेट करना चाहते हैं तो मेरे पास भी कोड है, यदि आप चाहते हैं।



45

जावास्क्रिप्ट और jQuery में हम एक पेज को दूसरे पेज पर रीडायरेक्ट करने के लिए निम्न कोड का उपयोग कर सकते हैं:

window.location.href="http://google.com";
window.location.replace("page1.html");

45

ECMAScript 6 + jQuery, 85 बाइट्स

$({jQueryCode:(url)=>location.replace(url)}).attr("jQueryCode")("http://example.com")

कृपया मुझे मत मारो, यह एक मजाक है। यह एक मज़ाक है। यह एक मजाक है।

इसने "प्रश्न का उत्तर प्रदान किया", इस अर्थ में कि यह "jQuery का उपयोग करके" एक समाधान के लिए कहा गया था, जो इस मामले में किसी भी तरह समीकरण में मजबूर करने के लिए मजबूर करता है।

फेरीबाग को स्पष्ट रूप से समझाए गए मजाक की जरूरत है (अभी भी मजाक कर रहा हूं, मुझे यकीन है कि समीक्षा प्रपत्र पर सीमित विकल्प हैं), इसलिए बिना किसी विज्ञापन के:

अन्य उत्तर jQuery के प्रयोग कर रहे हैं attr()पर locationया windowअनावश्यक वस्तुओं।

यह उत्तर भी इसका दुरुपयोग करता है, लेकिन अधिक हास्यास्पद तरीके से। स्थान सेट करने के लिए इसका उपयोग करने के बजाय, यह उपयोग करता हैattr() करने वाले फ़ंक्शन को पुनः प्राप्त करने के लिए है।

फ़ंक्शन का नाम jQueryCodeभले ही इसके बारे में jQuery कुछ भी नहीं है, और फ़ंक्शन somethingCodeको कॉल करना केवल भयानक है, खासकर जब कुछ भी एक भाषा नहीं है।

"85 बाइट्स" कोड गोल्फ का एक संदर्भ है। गोल्फिंग स्पष्ट रूप से कुछ ऐसा नहीं है जो आपको कोड गोल्फ के बाहर करना चाहिए, और इसके अलावा यह जवाब स्पष्ट रूप से वास्तव में गोल्फ नहीं है।

असल में, ऐंठन।


45

जावास्क्रिप्ट:

window.location.href='www.your_url.com';
window.top.location.href='www.your_url.com';
window.location.replace('www.your_url.com');

jQuery:

var url='www.your_url.com';
$(location).attr('href',url);
$(location).prop('href',url);//instead of location you can use window

1
क्या jQuery में url को एक चर के रूप में संग्रहीत करने का एक कारण है, लेकिन वेनिला के साथ नहीं?
ईएसआर

43

जावास्क्रिप्ट का उपयोग करना:

विधि 1:

window.location.href="http://google.com";

विधि 2:

window.location.replace("http://google.com");

JQuery का उपयोग करना:

विधि 1: $ (स्थान)

$(location).attr('href', 'http://google.com');

विधि 2: पुन: प्रयोज्य कार्य

jQuery.fn.redirectTo = function(url){
    window.location.href = url;
}

jQuery(window).redirectTo("http://google.com");

41

यहाँ एक समय देरी पुनर्निर्देशन है। आप जो भी चाहते हैं उसके लिए विलंब समय निर्धारित कर सकते हैं:

<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Your Document Title</title>
    <script type="text/javascript">
        function delayer(delay) {
            onLoad = setTimeout('window.location.href = "http://www.google.com/"', delay);
        }
    </script>
</head>

<body>
    <script>
        delayer(8000)
    </script>
    <div>You will be redirected in 8 seconds!</div>
</body>

</html>

5
बेहतर यह करें: setTimeout (फ़ंक्शन () {window.location.href = " google.com "}, देरी);
दिक्किनी

39

ऐसा करने के तीन मुख्य तरीके हैं,

window.location.href='blaah.com';
window.location.assign('blaah.com');

तथा...

window.location.replace('blaah.com');

अंतिम एक पारंपरिक पुनर्निर्देश के लिए सबसे अच्छा है, क्योंकि यह आपके खोज इतिहास में पुनर्निर्देशित होने से पहले आपके द्वारा गए पृष्ठ को नहीं बचाएगा। हालाँकि, यदि आप जावास्क्रिप्ट के साथ एक टैब खोलना चाहते हैं, तो आप उपरोक्त में से किसी का भी उपयोग कर सकते हैं।1

संपादित करें: windowउपसर्ग वैकल्पिक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.