Soru Başka bir web sayfasına nasıl yönlendiririm?


Kullanıcıyı jQuery veya salt JavaScript kullanarak bir sayfadan diğerine nasıl yönlendirebilirim?


7737
2018-02-02 12:54


Menşei


Window.location = url ikisini de görmeye devam ediyorum; ve window.location.href = url; Nasıl farklılar? Onlar? BTW, window.location.replace (url) hakkında bir şey bilmiyordum. Güzel. - David M. Miller
window.location aynıdır window.location.hrefdavranış açısından. window.location bir nesne döndürür. Eğer .href ayarlanmadı window.location parametreyi değiştirmek için varsayılan .href. Sonuç: Birini iyi kullanın. - Raptor
var url = "web sitesi adı" $ (location) .attr ('href', url); - Mad Scientist
@MadScientist Bunu yapmak için geriye doğru bir yoldur. Konum nesnesi bir HTML öğesi değildir ve ayarlamak için jquery nesnesini kullanmak yanlış görünüyor. Düz JS kodu çok basitken bunu neden kullanırsınız? - Juan Mendes
Neden yönlendirmek istiyorsunuz? Giriş formu sunulmamalıdır? Ayrıca, hedef sayfada herhangi bir mantık olmasa bile, formu başka bir sayfaya gönderebilirsiniz. - Dimt


Cevaplar:


Bir jQuery kullanarak sadece yönlendirme değildir

jQuery gerekli değildir ve window.location.replace(...) bir HTTP yönlendirmesini en iyi simüle eder.

window.location.replace(...) kullanmaktan daha iyidir window.location.href, Çünkü replace() orijin sayfasını oturum geçmişinde tutmaz, yani kullanıcı hiç bitmeyen bir arka tuşa basmaz.

Bir bağlantıyı tıklayan bir kişiyi simüle etmek istiyorsanız,    location.href

Bir HTTP yönlendirme simülasyonu yapmak istiyorsanız location.replace

Örneğin:

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



Gönderme butonu ile false; ayrıca fonksiyonunuzun içinde - Abhi
Soru özellikle javascript hakkındadır, ancak kullanıcının javascript'i devre dışı bırakması durumunda bir meta yenilemenin bir geri dönüş olarak kullanılabileceğini belirtmek faydalı olabilir. - Hoppe
@ NicolòMartini If (IE) document.write (""); - Jeff Noel
@ NicolòMartini Eğer kontrol etmek isterseniz, aşağıdaki REFERRER kaybetmemek için bir yol gönderdi! - Mark Pieszak - DevHelp.Online
JQuery'yi kullanıyorsanız, sadece kullanın $(location).attr('href',url);. window.location.href Bazı tarayıcılarda tutarsız davranışı var gibi görünüyor, aslında, bu dışarı benim Firefox sürümünde işe yaramaz. Ayarını anladım window.location doğrudan IE sürümlerinde çalışmıyor. - Noz


UYARI: Bu cevap sadece olası bir çözüm olarak sağlanmıştır; belli ki değil jQuery gerektiren en iyi çözüm. Bunun yerine, saf JavaScript çözümünü tercih edin.

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

1473
2017-10-28 16:35



Bu soruya verilen cevaptır. Jquery'yi zaten kullanıyorsanız ve bu yüzden önceden yüklenmişse, daha fazla bant genişliği etkin olacaktır ve tabii ki kısayolu kullanmak daha net olacaktır. - barrymac
Daha da önemlisi, bunu abartılı jQuery ile yapmak için bir yolu var mı? Bu sadece window.location.href = url için bir sarmalayıcıdır; Ama jQuery bir işlevi varsa, window.location.href = url ise; Mevcut ortamda (tarayıcı, işletim sistemi, vb) çalışmayacaktı jQuery çekirdek telafi edebilir? - Chris
JQuery'yi bu şekilde denkleme zorlamak, özellikle de gülünç ve anlamsızdır. window.location bir öğe değildir ve bu nedenle özniteliklere sahip değildir. - Tim Down
@CoffeeAddict, 2 yaşında bir yorum, ancak lütfen nasıl bana okuldan location.href = 'http://stackoverflow.com'; Buradaki cevabın alternatifinden daha ayrıntılı mıdır? Değişkeni alsanız bile, bunun için jQuery'yi kullanmanın daha ayrıntılı ve daha fazla karakteri vardır. - rlemon
@deltaray Bu değil Yönlendirmenin başka bir yolu, yukarıda belirtildiği gibi, bir nesne bile olmayan konum nesnesi etrafında anlamsız bir sarıcıdır! Bu bana hatırlatıyor i.stack.imgur.com/ssRUr.gif - JCM


Bir sayfayı yeniden yönlendirmek için standart "vanilya" JavaScript yolu:

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


Eğer buradaysan, çünkü sen kaybetme Yönlendirme yaparken HTTP_REFERER, okumaya devam edin:


Aşağıdaki bölüm kullananlar içindir HTTP_REFERER Çok güvenli önlemlerden biri olarak (büyük bir koruyucu önlem olmasa da). Kullanıyorsanız Internet Explorer 8 veya daha düşük, herhangi bir JavaScript sayfası yeniden yönlendirmesi (location.href, vb.) kullanılırken bu değişkenler kaybolur.

Aşağıda bir alternatif uygulayacağız IE8 ve daha düşük Böylece HTTP_REFERER kaybetmiyoruz. Aksi takdirde hemen hemen her zaman kullanabilirsiniz window.location.href.

Karşı test HTTP_REFERER (URL yapıştırma, oturum, vb.) kutu Bir isteğin meşru olup olmadığını anlamanıza yardımcı olmak. (Not: Ayrıca, yorumlarda droop'un bağlantısı ile belirtildiği gibi, bu yönlendiricileri çalışma / taklit etme yolları da vardır.


Basit çapraz tarayıcı test çözümü (Internet Explorer 9+ ve diğer tüm tarayıcılar için window.location.href dosyasına geri dönüş)

Kullanımı: 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



Ayak notu: Yönlendirmeyi bir güvenlik önlemi olarak kontrol etmek berbat bir çözümdür. duckduckgo.com/?q=referrer+spoofing - droope
Yönlendirici URL'sinde bir HTTP GET oturum kimliğiniz varsa, oturumun geçerliliğine karşı olduğunu kontrol etmek için kullanılabilir. - Andrew Fox
@mcpDESIGNS kullanmaya çalıştığınızdan emin misiniz? location.assign? Uygulamamda IE8 ile kullanıyorum ve HTTP_REFERER başlığı. - Buzinas
En azından 2012'de geri dönmedi, belki de IE8'in düzeltme ekleri düzeltildi - bunu duymak güzel! - Mark Pieszak - DevHelp.Online


kullanın:

// 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 eski-IE-only (Firefox / Chrome bunu desteklemiyor). Tüm seçenekleri sıralamak istiyorsanız, unutma document.location. - Rob W
Bu açıklamıyor her şey hiç Birisi ne seçmeli? Listeden rastgele birini seçsin mi? Ayrıca, bu mevcut cevaplara ne ekler? - Léo Lam
Bu cevap şu anda meta tartışıldı - Bergi
@ LéoLam Bu yüzden Google adında bir arama motoru var. :-) Her birini Google'da arayabilir ve farkı bulabilirsiniz. Rastgele birini seçmek istemezsiniz. - I am the Most Stupid Person
@IamtheMostStupidPerson tam olarak benim nokta. Cevap işe yaramaz. - Léo Lam


Bu her tarayıcı için çalışır:

window.location.href = 'your_url';

269
2017-10-22 23:45



Sen de yapabilirsin document.location.replace(redirectURL) ilk sayfanın tarayıcı geçmişinde olmasını istemiyorsanız - jazzcat


Ne yapmaya çalıştığın konusunda biraz daha açıklayıcı olsaydın yardımcı olurdu. Disk belleği verisi oluşturmaya çalışıyorsanız, bunu nasıl yaptığınızla ilgili bazı seçenekler vardır. Doğrudan alabileceğiniz her sayfa için ayrı bağlantılar oluşturabilirsiniz.

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

Örnekteki mevcut sayfanın kodda ve CSS ile farklı şekilde ele alındığını unutmayın.

Disk belleği verilerinin AJAX ile değiştirilmesini istiyorsanız, jQuery'nin buraya gelmesi beklenir. Yapacağınız şey, farklı bir sayfaya karşılık gelen bağlantı etiketlerinin her birine bir tıklama işleyicisi ekler. Bu tıklatma işleyicisi, AJAX aracılığıyla bir sonraki sayfaya gidip yeni jQuery kodunu çağırır ve tabloyu yeni verilerle günceller. Aşağıdaki örnekte, yeni sayfa verilerini döndüren bir web hizmetiniz olduğunu varsayar.

$(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





Bende bunu düşünüyorum location.replace(URL) en iyi yoldur, ancak arama motorlarına yeniden yönlendirme hakkında bilgi vermek isterseniz (yönlendirmeyi görmek için JavaScript kodunu analiz etmiyorsanız) rel="canonical" web sitenize meta etiketi.

İçinde bir HTML yenileme meta etiketi bulunan bir noscript bölümü eklemek de iyi bir çözümdür. Bunu kullanmanızı öneririm JavaScript yeniden yönlendirme aracı yönlendirmeler oluşturmak. Ayrıca HTTP yönlendiricisini geçmek için Internet Explorer desteği vardır.

Örnek kod gecikmeden şu şekilde görünür:

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





Ancak birisi ana sayfaya tekrar yönlendirmek istiyorsa, aşağıdaki snippet'i kullanabilir.

window.location = window.location.host

Geliştirme, evreleme ve üretim olmak üzere üç farklı ortama sahipseniz yararlı olur.

Bu pencereyi ya da window.location nesnesini, bu kelimeleri Chrome Konsoluna ya da kundakçıKonsolu.


191
2017-10-30 12:15



window.location.replace (window.location.protocol + "//" + window.location.host) - moala
daha da basit: window.location = '/' - Iftah
Iftah - bu "taban" meta etiketine bağlıdır. - Rob Quist


JavaScript, tarayıcınızın adres çubuğunda görüntülenen geçerli URL'yi almak ve değiştirmek için birçok yöntem sunar. Tüm bu yöntemler, Window nesnesinin bir özelliği olan Location nesnesini kullanır. Geçerli URL’yi aşağıdaki gibi gösteren yeni bir Konum nesnesi oluşturabilirsiniz.

var currentLocation = window.location;

Bir URL'nin Temel Yapısı

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

enter image description here

  1. Protokol - İnternetteki kaynağa erişmek için kullanılacak protokol adını belirtir. (HTTP (SSL olmadan) veya HTTPS (SSL ile))

  2. ana makine adı - Ana bilgisayar adı, kaynağa sahip olan ana bilgisayarı belirtir. Örneğin, www.stackoverflow.com. Bir sunucu, ana bilgisayarın adını kullanarak hizmet sağlar.

  3. port - Bir sunucuya geldiğinde Internet veya başka bir ağ mesajının iletileceği belirli bir süreci tanımak için kullanılan bir port numarası.

  4. yol adı - Yol, Web istemcisinin erişmek istediği ana bilgisayardaki belirli kaynak hakkında bilgi verir. Örneğin, stackoverflow.com/index.html.

  5. sorgu - Bir sorgu dizesi, yol bileşenini izler ve kaynağın bir amaç için kullanabileceği bir bilgi dizesi sağlar (örneğin, bir arama için parametreler veya işlenecek veriler olarak).

  6. hash - Bir URL'nin çapa kısmı, karma işaretini (#) içerir.

Bu Konum nesnesi özellikleriyle, bu URL bileşenlerinin tümüne erişebilirsiniz

  1. esrar   Bir URL'nin çapa bölümünü ayarlar veya döndürür.
  2. evsahibi   -Görüntüler veya URL'nin ana bilgisayar adını ve portunu döndürür.
  3. hostname   -Set veya bir URL'nin ana bilgisayar adını döndürür.
  4. href   -Sümünü veya tümünü döndürür URL.
  5. yol adı   Bir URL'nin yol adını belirler veya döndürür.
  6. Liman -Sunucu bir URL için kullandığı port numarasını ayarlar veya döndürür.
  7. protokol   Bir URL protokolünü ayarlar veya döndürür.
  8. arama   -Görüntüler veya bir URL'nin sorgu bölümünü döndürür

Şimdi bir sayfayı değiştirmek veya kullanıcıyı başka bir sayfaya yönlendirmek istiyorsanız href Konum nesnesinin bunun gibi özelliği

Location nesnesinin href özelliğini kullanabilirsiniz.

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

Konum Nesnesi ayrıca bu üç yöntem var

  1. atamak() - Yeni bir belge yükler.
  2. Tekrar yükle() - Mevcut belgeyi yeniden yükler.
  3. () Yerine - Geçerli belgeyi yenisiyle değiştirir

Bunun gibi diğer sayfalara yönlendirmek için atama () ve yöntemleri de kullanabilirsiniz.

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

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

Atama () ve değiştir () nasıl farklıdır?- replace () yöntemi ile assign () yöntemi () arasındaki fark, replace () geçerli belgenin URL'sini belge geçmişinden kaldırmasıdır. Bu, geri gitmek için "geri" düğmesini kullanmanın mümkün olmadığı anlamına gelir orijinal belge Bu nedenle, yeni bir belge yüklemek ve orijinal belgeye geri dönmek için seçenek vermek için atama () yöntemini kullanın.


183
2017-12-23 13:35





Sadece kullanarak ayarlayabilmelidir window.location.

Örnek:

window.location = "https://stackoverflow.com/";

İşte konuyla ilgili geçmiş bir yazı var:

Başka bir web sayfasına nasıl yönlendiririm?


166
2018-02-16 14:42



Belki işe yarar, ama bunu yapmanın doğru yolu olup olmadığından emin değilim. Bunu destekleyen belgeler görmüyorum. Programcıları kötü programlama uygulamalarına yönlendirebilir. - Jaider


Başlamadan önce jQuery, DOM manipülasyonu için kullanılan bir JavaScript kitaplığıdır. Yani bir sayfa yönlendirmesi için jQuery kullanmamalısınız.

Jquery.com'dan bir alıntı:

JQuery eski tarayıcı sürümlerinde büyük sorunlar olmadan çalışabilirken   jQuery'yi aktif olarak test etmiyoruz ve genellikle hataları düzeltmiyoruz   Onlarda görünebilir.

Burada bulundu: https://jquery.com/browser-support/

Dolayısıyla jQuery, geriye dönük uyumluluk için bir bütün ve her şeyden çözüm değildir.

Ham JavaScript kullanan aşağıdaki çözüm tüm tarayıcılarda çalışır ve uzun süre standarttır, böylece çapraz tarayıcı desteği için herhangi bir kütüphaneye ihtiyacınız yoktur.

Bu sayfa yönlendirilecek Google 3000 milisaniyeden sonra

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

Farklı seçenekler şöyledir:

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"

Değiştir kullanıldığında, geri düğmesi, geçmişte hiç olmadığı gibi yönlendirme sayfasına geri dönmeyecektir. Kullanıcının yeniden yönlendirme sayfasına geri dönmesini istiyorsanız window.location.href veya window.location.assign. Kullanıcının yeniden yönlendirme sayfasına geri dönmesini sağlayan bir seçenek kullanırsanız, yönlendirme sayfasına girdiğinizde onu tekrar yönlendireceğinizi unutmayın. Bu yüzden yönlendirme için bir seçenek seçerken bunu göz önünde bulundurun. Sayfanın yalnızca kullanıcı tarafından bir işlem yapıldığında yönlendirme yaptığı koşullar altında, sayfanın arka düğme geçmişine sahip olması iyi olur. Ancak, sayfa otomatik olarak yönlendirilirse, kullanıcının, yeniden yönlendirmeyi gönderdiği sayfaya geri dönmeden geri düğmesini kullanabilmesi için değiştirmeyi kullanmanız gerekir.

Bir sayfa yönlendirme işlemini takip edildiği gibi çalıştırmak için meta verileri de kullanabilirsiniz.

META Yenile

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

META Yer

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

BASE Hijacking

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

Şüphelenmeyen müşterinizi gitmek istemeyebilecekleri bir sayfaya yönlendirmek için daha birçok yöntem bu sayfada bulunabilir (bunlardan biri jQuery'ye bağlı değildir):

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

Ayrıca şunu da belirtmek isterim, insanlar rastgele yönlendirilmek istemiyorlar. Sadece kesinlikle gerekli olduğunda insanları yönlendirin. İnsanları rastgele yönlendirmeye başlarsanız, sitenize bir daha asla gitmeyeceklerdir.

Bir sonraki bölüm varsayımsaldır:

Ayrıca, kötü amaçlı bir site olarak da raporlanabilir. Bu durumda, kullanıcılar sitenize giden bir bağlantıyı tıkladıklarında, kullanıcıların tarayıcısı sitenizin kötü amaçlı olduğu konusunda uyarıda bulunabilir. Aynı zamanda, kullanıcılar sitenizde kötü bir deneyim bildiriyorsa, arama motorları puanınızı düşürmeye başlayabilir.

Lütfen yönlendirmelerle ilgili Google Web Yöneticisi Kurallarını inceleyin: https://support.google.com/webmasters/answer/2721217?hl=en&ref_topic=6001971

İşte sizi sayfadan çıkaran eğlenceli küçük bir sayfa.

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

İki sayfa örneğini birleştirirseniz, yeniden yönlendirmenin bir döngüsüne sahip olursunuz. Böylece, kullanıcının sitenizi bir daha asla kullanmak istemeyeceği garanti edilir.


146
2017-08-27 21:50



Yönlendirme için jQuery'ye ihtiyacınız yoktur. Kimse yönlendirme için jQuery'ye ihtiyaç duymuyor. - Patrick W. McMahon
Ama hiçbir şey için JQuery'ye ihtiyacınız yok, JQuery olmadan her şeyi yapabilirsiniz. Soru JQuery'yi soruyordu. - Epirocks
Gerekmediğini söyleyerek jQuery isteğini ele alıyorum. JQuery, JavaScript için birçok yararlı kısayol içerir, ancak yönlendirmeler için herhangi bir kısayola gerek yoktur. JQuery sadece JavaScript’tir. Daha fazla bir şey yok. Bir yönlendirmeyi çağırmanın normal yolu, jQuery'yi kullanarak işlevleriyle çalışır. - Patrick W. McMahon
Doğru iş için doğru araç denen bir şey var. Yönlendirmeler yapmak için jQuery'yi kullanmak, bir çiviyi çekiçlemek için bir tornavida kolunu kullanmak gibidir. Yapabilirsin ama daha kolay yollar var. - Patrick W. McMahon
Patrick, kendi mantığınızla, her durumda JQuery'ye ihtiyaç yoktur. Bütün mesele kolaylık ve soru sordu. Söylediğim en iyi araç, JQuery versiyonudur, çünkü muhtemelen gelecek için tarayıcı ayrıntılarını soyutlayacaktır. Yani argümanınız hala boş ve geçersiz. JQuery için sorulan soru. - Epirocks