सवाल मैं किसी अन्य वेबपृष्ठ पर रीडायरेक्ट कैसे करूं?


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


7737
2018-02-02 12:54


मूल


मैं दोनों खिड़की देख रहा हूँ। स्थान = यूआरएल; और window.location.href = url; वे कैसे अलग हैं? क्या वो? बीटीडब्ल्यू, मुझे window.location.replace (url) के बारे में पता नहीं था। अच्छा लगा। - David M. Miller
window.location के समान है window.location.hrefव्यवहार के मामले में। window.location एक वस्तु देता है। अगर .href सेट नहीं है, window.location पैरामीटर बदलने के लिए डिफ़ॉल्ट .href। निष्कर्ष निकालें: किसी एक का प्रयोग ठीक है। - Raptor
var url = "वेबसाइट का नाम" $ (स्थान) .attr ('href', url); - Mad Scientist
@MadScientist यह करने के लिए एक पिछड़ा तरीका है। स्थान वस्तु एक HTML तत्व नहीं है और इसे सेट करने के लिए jquery ऑब्जेक्ट का उपयोग करना गलत लगता है। जब आप सीधे जेएस कोड इतना आसान करते हैं तो आप इसका उपयोग क्यों करेंगे? - Juan Mendes
आप रीडायरेक्ट क्यों करना चाहते हैं? लॉगिन फॉर्म जमा नहीं किया जाना चाहिए? और यहां तक ​​कि यदि लक्ष्य पृष्ठ में कोई तर्क नहीं है, तो भी आप फ़ॉर्म को किसी अन्य पृष्ठ पर सबमिट करने में सक्षम होंगे। - Dimt


जवाब:


कोई बस 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";

12949
2018-02-03 04:24



सबमिट बटन के मामले में झूठी वापसी जोड़ें; आपके समारोह के अंदर भी - Abhi
प्रश्न विशेष रूप से जावास्क्रिप्ट के बारे में है, लेकिन यह ध्यान देने योग्य हो सकता है कि उपयोगकर्ता को जावास्क्रिप्ट अक्षम होने पर मेटा रीफ्रेश को असफल बैक के रूप में उपयोग किया जा सकता है - Hoppe
@ निकोलोमार्टिनी अगर (आईई) document.write (""); - Jeff Noel
@ निकोलोमार्टिनी मैंने नीचे रेफरर खोने का एक तरीका पोस्ट किया है यदि आप इसे देखना चाहते हैं! - Mark Pieszak - DevHelp.Online
यदि आप पहले से ही jQuery का उपयोग कर रहे हैं, तो बस उपयोग करें $(location).attr('href',url);। window.location.href ऐसा लगता है कि कुछ ब्राउज़रों में असंगत व्यवहार है, असल में, यह फ्लैट आउट फ़ायरफ़ॉक्स के मेरे संस्करण में काम नहीं करता है। मैंने सेटिंग के बारे में सुना है window.location सीधे आईई के संस्करणों में काम नहीं कर रहा है। - Noz


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

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

1473
2017-10-28 16:35



यह सवाल का शाब्दिक उत्तर है। यदि आप पहले से ही Jquery का उपयोग कर रहे हैं और इसलिए इसे पहले ही लोड कर लिया गया है तो यह शॉर्टकट का उपयोग करने के लिए अधिक बैंडविड्थ कुशल और निश्चित रूप से स्पष्ट होगा - barrymac
सबसे महत्वपूर्ण बात यह है कि क्या jQuery के साथ ऐसा करने का कोई तरीका है जो अनुपस्थित है? यह window.location.href = url के लिए सिर्फ एक रैपर है; लेकिन अगर jQuery में कुछ फ़ंक्शन था, यदि window.location.href = url; वर्तमान वातावरण (ब्राउज़र, ओएस, आदि) में काम नहीं करने जा रहा था jQuery कोर क्षतिपूर्ति कर सकता है? - Chris
इस तरह से समीकरण में jQuery को मजबूर करना सिर्फ हास्यास्पद और व्यर्थ है, खासकर तब से window.location एक तत्व नहीं है और इसलिए गुण नहीं हैं। - Tim Down
@CoffeeAddict, 2 साल पुरानी टिप्पणी, लेकिन कृपया मुझे कैसे स्कूल करें location.href = 'http://stackoverflow.com'; यहां जवाब में विकल्प की तुलना में अधिक verbose है? भले ही आप चर को दूर ले जाएं, फिर भी इसके लिए jQuery का उपयोग करने के लिए यह अभी भी अधिक वर्बोज़ और अधिक वर्ण हैं। - rlemon
@deltaray यह है नहीं उपरोक्त कहने पर रीडायरेक्ट करने का एक और तरीका, यह स्थान ऑब्जेक्ट के आस-पास एक अर्थहीन रैपर है, जो कि एक तत्व भी नहीं है! यह मुझे याद दिलाता है i.stack.imgur.com/ssRUr.gif - JCM


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

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


यदि आप यहां हैं क्योंकि आप हैं हार रीडायरेक्ट करते समय HTTP_REFERER, पढ़ना जारी रखें:


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

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

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


सरल क्रॉस-ब्राउज़र परीक्षण समाधान (Internet Explorer 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; 
    }
}

509
2017-07-27 14:41



फुट नोट: रेफरर को सुरक्षा उपाय के रूप में जांचना एक लुभावनी समाधान है। duckduckgo.com/?q=referrer+spoofing - droope
यदि आपके पास रेफरर यूआरएल में HTTP GET सत्र आईडी है तो इसे वैधता के लिए सत्र के विरुद्ध जांचने के लिए उपयोग किया जा सकता है। - Andrew Fox
@mcpDESIGNS क्या आप सुनिश्चित हैं कि आपने उपयोग करने का प्रयास किया है location.assign? मैं आईई 8 के साथ अपने ऐप में उपयोग करता हूं, और मैं हार नहीं पाता हूं HTTP_REFERER हैडर। - Buzinas
कम से कम 2012 में यह काम नहीं कर रहा था, शायद बाद में आईई 8 के पैच इसे तय कर दिया - हालांकि सुनना अच्छा है! - Mark Pieszak - DevHelp.Online


उपयोग:

// 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')

349
2018-01-28 04:28



window.navigate पुराना-आईई-केवल (फ़ायरफ़ॉक्स / क्रोम इसका समर्थन नहीं करता है)। यदि आप सभी विकल्पों की गणना करना चाहते हैं, तो इसके बारे में मत भूलना document.location। - Rob W
यह समझा नहीं है कुछ भी बिलकुल। किसी को लेने के लिए क्या माना जाता है? सूची से यादृच्छिक रूप से उठाओ? साथ ही, यह मौजूदा उत्तरों में क्या जोड़ता है? - Léo Lam
यह जवाब है वर्तमान में मेटा में चर्चा की - Bergi
@ लेओलाम यही कारण है कि Google नामक एक खोज इंजन है। :-) आप Google पर प्रत्येक को खोज सकते हैं और अंतर ढूंढ सकते हैं। आप एक यादृच्छिक रूप से नहीं चुनना चाहते हैं। - I am the Most Stupid Person
@IamtheMostStupidPerson बिल्कुल मेरी बात है। जवाब बेकार है। - Léo Lam


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

window.location.href = 'your_url';

269
2017-10-22 23:45



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


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

<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>
...

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

यदि आप 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
    });
});

253
2018-02-02 13:18





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

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

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

<!-- 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 -->

215
2018-04-25 10:12