Wie leite ich zu einer anderen Webseite weiter?


7723

Wie kann ich den Benutzer mit jQuery oder reinem JavaScript von einer Seite auf eine andere umleiten?


147
Ich sehe immer wieder beide window.location = url; und window.location.href = url; Wie unterscheiden sie sich? Sind sie? Übrigens wusste ich nichts über window.location.replace (url). Nett.
David M. Miller

100
window.locationist das gleiche wie window.location.hrefin Bezug auf das Verhalten. window.locationgibt ein Objekt zurück. Wenn .hrefnicht festgelegt, wird window.locationstandardmäßig der Parameter geändert .href. Fazit: Verwenden Sie eine der beiden ist in Ordnung.
Raptor

10
var url = "Name der Website" $ (Speicherort) .attr ('href', URL);
Mad Scientist

31
@ MadScientist Das ist ein rückwärts gerichteter Weg, es zu tun. Das Standortobjekt ist kein HTML-Element, und die Verwendung des jquery-Objekts zum Festlegen scheint einfach falsch zu sein. Warum sollten Sie das verwenden, wenn der reine JS-Code so einfach ist?
Juan Mendes

1
Warum möchten Sie umleiten? Das Anmeldeformular sollte nicht gesendet werden? Und selbst wenn die Zielseite keine Logik enthält, können Sie das Formular dennoch an eine andere Seite senden.
Dimt

Antworten:


14808

Man leitet nicht einfach mit jQuery um

jQuery ist nicht erforderlich und window.location.replace(...)simuliert am besten eine HTTP-Umleitung.

window.location.replace(...)ist besser als zu benutzen window.location.href, weilreplace() die Ursprungsseite nicht im Sitzungsverlauf bleibt, was bedeutet, dass der Benutzer nicht in einem endlosen Fiasko mit den Zurück-Schaltflächen stecken bleibt.

Wenn Sie jemanden simulieren möchten, der auf einen Link klickt, verwenden Sie location.href

Wenn Sie eine HTTP-Umleitung simulieren möchten, verwenden Sie location.replace

Zum Beispiel:

// 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
im Falle der Schaltfläche "Senden" add return false; auch innerhalb Ihrer Funktion
Abhi

134
Die Frage bezieht sich speziell auf Javascript, aber es kann erwähnenswert sein, dass eine Meta-Aktualisierung als
Hoppe

22
@ NicolòMartini If (IE) document.write ("");
Jeff Noel

48
Wenn Sie jQuery bereits verwenden, verwenden Sie einfach $(location).attr('href',url);. window.location.hrefscheint in einigen Browsern ein unbeständiges Verhalten zu haben, tatsächlich funktioniert es in meiner Version von Firefox nicht. Ich habe gehört, dass die Einstellung window.locationin IE-Versionen direkt nicht funktioniert.
Noz

8
"ist besser" sollte entfernt werden. Wie später in der Antwort angegeben, ist die beste Lösung situativ. OP fragt nicht "Wie kann ich eine HTTP-Umleitung mit Javascript emulieren ..."
MadMaardigan

1684

WARNUNG: Diese Antwort wurde lediglich als mögliche Lösung angegeben. Es ist offensichtlich nicht die beste Lösung, da es jQuery erfordert. Bevorzugen Sie stattdessen die reine JavaScript-Lösung.

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

63
Dies ist die wörtliche Antwort auf die Frage. Wenn Sie Jquery bereits verwenden und es daher bereits geladen haben, ist es bandbreiteneffizienter und natürlich klarer, die Verknüpfung
barrymac

27
Was noch wichtiger ist: Gibt es eine Möglichkeit, dies mit jQuery zu tun, die nicht mehr funktioniert? Dies ist nur ein Wrapper für window.location.href = url; Aber wenn jQuery eine Funktion hätte, wenn window.location.href = url; funktionierte in der aktuellen Umgebung (Browser, Betriebssystem usw.) nicht. jQuery Core konnte dies kompensieren?
Chris

271
Auf diese Weise jQuery in die Gleichung zu zwingen, ist einfach lächerlich und sinnlos, zumal window.locationes kein Element ist und daher keine Attribute hat.
Tim Down

10
Ich bezweifle irgendwie, dass dies immer noch mit aktuellen jQuery-Versionen funktioniert, in denen .attr()tatsächlich Attribute (dh .setAttribute()) festgelegt werden
ThiefMaster

156
@deltaray Dies ist keine andere Möglichkeit zum Umleiten, wie oben erwähnt, es ist ein bedeutungsloser Wrapper um das Standortobjekt, der nicht einmal ein Element ist! Dies erinnert mich an i.stack.imgur.com/ssRUr.gif
JCM

676

Standard "Vanille" JavaScript-Methode zum Umleiten einer Seite

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

Oder einfacher: (da windowist Global)

location.href = 'newPage.html';

Wenn Sie hier sind, weil Sie HTTP_REFERER bei der Umleitung verlieren , lesen Sie weiter:

(Andernfalls ignorieren Sie diesen letzten Teil)


Der folgende Abschnitt richtet sich an Personen, HTTP_REFERERdie eine von vielen Sicherheitsmaßnahmen verwenden (obwohl dies keine großartige Schutzmaßnahme ist). Wenn Sie Internet Explorer 8 verwenden oder niedriger verwenden, gehen diese Variablen verloren, wenn Sie eine JavaScript-Seitenumleitung (location.href usw.) verwenden.

Im Folgenden werden wir eine Alternative für IE8 und niedriger implementieren , damit wir HTTP_REFERER nicht verlieren. Ansonsten können Sie fast immer einfach verwendenwindow.location.href .

Durch Testen HTTP_REFERER(URL-Einfügen, Sitzung usw.) kann festgestellt werden , ob eine Anforderung legitim ist. ( Hinweis: Es gibt auch Möglichkeiten, diese Verweise zu umgehen / zu fälschen, wie durch den Link von droop in den Kommentaren angegeben.)


Einfache browserübergreifende Testlösung (Fallback auf window.location.href für Internet Explorer 9+ und alle anderen Browser)

Verwendungszweck: 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
Fußnote: Die Überprüfung auf Überweiser als Sicherheitsmaßnahme ist eine miese Lösung. duckduckgo.com/?q=referrer+spoofing
droope

Wenn Sie eine HTTP-GET-Sitzungs-ID in der Referrer-URL haben, können Sie diese anhand der Gültigkeit der Sitzung überprüfen.
Andrew Fox

@mcpDESIGNS Sind Sie sicher, dass Sie versucht haben, zu verwenden location.assign? Ich verwende in meiner App IE8 und verliere den HTTP_REFERERHeader nicht.
Buzinas

Zumindest 2012 hat es nicht funktioniert, vielleicht haben spätere Patches von IE8 das Problem behoben - das ist aber gut zu hören!
Mark Pieszak - Trilon.io

1
Ihre Erwähnung von HTTP_REFERER hat mir geholfen, das Problem mit window.open zu verstehen, und ich habe hier eine Lösung gefunden: stackoverflow.com/questions/7580613/… . Übrigens habe ich das Problem in IE11!
Dov Miller

427

Es gibt viele Möglichkeiten, dies zu tun.

// 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.navigateist nur für den alten IE (Firefox / Chrome unterstützen dies nicht). Wenn Sie alle Optionen auflisten möchten, vergessen Sie nicht document.location.
Rob W

document.location = document.referrer; Bitte fügen Sie es auch in die Liste ein. Dies funktioniert nicht wie History.back, sondern die Seite wird erneut aktualisiert.
Ali Humayun

.attr () funktioniert unter jQuery 3.0.0 nicht. Verwenden Sie stattdessen .val ().
Rivalus

4
@ LéoLam Deshalb gibt es eine Suchmaschine namens Google. :-) Sie können jeden bei Google suchen und den Unterschied finden. Sie möchten nicht zufällig eine auswählen.
Ich bin die dümmste Person


330

Dies funktioniert für jeden Browser:

window.location.href = 'your_url';

8
Sie können dies auch tun, document.location.replace(redirectURL)wenn Sie nicht möchten, dass die erste Seite im Browserverlauf angezeigt wird
jazzcat

298

Es wäre hilfreich, wenn Sie etwas aussagekräftiger wären, was Sie versuchen zu tun. Wenn Sie versuchen, ausgelagerte Daten zu generieren, gibt es einige Optionen, wie Sie dies tun. Sie können für jede Seite, auf die Sie direkt zugreifen möchten, separate Links erstellen.

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

Beachten Sie, dass die aktuelle Seite im Beispiel im Code und mit CSS unterschiedlich behandelt wird.

Wenn Sie möchten, dass die ausgelagerten Daten über AJAX geändert werden, kommt jQuery hier ins Spiel. Sie fügen jedem der Ankertags, die einer anderen Seite entsprechen, einen Klick-Handler hinzu. Dieser Klick-Handler ruft einen jQuery-Code auf, der die nächste Seite über AJAX abruft und die Tabelle mit den neuen Daten aktualisiert. Im folgenden Beispiel wird davon ausgegangen, dass Sie über einen Webdienst verfügen, der die neuen Seitendaten zurückgibt.

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

Ich denke auch, dass dies location.replace(URL)der beste Weg ist, aber wenn Sie die Suchmaschinen über Ihre Umleitung informieren möchten (sie analysieren keinen JavaScript-Code, um die Umleitung zu sehen), sollten Sie den hinzufügenrel="canonical" Meta-Tag zu Ihrer Website .

Das Hinzufügen eines Noscript-Abschnitts mit einem HTML-Aktualisierungs-Meta-Tag ist ebenfalls eine gute Lösung. Ich empfehle Ihnen, dieses JavaScript-Umleitungstool zu verwenden , um Umleitungen zu erstellen. Es hat auch Internet Explorer-Unterstützung, um den HTTP-Referrer zu übergeben.

Beispielcode ohne Verzögerung sieht folgendermaßen aus:

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

Wenn jemand jedoch zur Startseite zurückkehren möchte, kann er das folgende Snippet verwenden.

window.location = window.location.host

Es wäre hilfreich, wenn Sie drei verschiedene Umgebungen als Entwicklung, Bereitstellung und Produktion haben.

Sie können dieses window oder window.location-Objekt erkunden, indem Sie diese Wörter einfach in die Chrome Console oder die Firebug -Konsole einfügen .


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

13
noch einfacher: window.location = '/'
Iftah

213

JavaScript bietet Ihnen viele Methoden zum Abrufen und Ändern der aktuellen URL, die in der Adressleiste des Browsers angezeigt wird. Alle diese Methoden verwenden das Location-Objekt, das eine Eigenschaft des Window-Objekts ist. Sie können ein neues Standortobjekt mit der aktuellen URL wie folgt erstellen.

var currentLocation = window.location;

Grundstruktur einer URL

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

Geben Sie hier die Bildbeschreibung ein

  1. Protokoll - Gibt den Protokollnamen an, mit dem auf die Ressource im Internet zugegriffen werden soll. (HTTP (ohne SSL) oder HTTPS (mit SSL))

  2. Hostname - Der Hostname gibt den Host an, dem die Ressource gehört. Zum Beispiel www.stackoverflow.com. Ein Server stellt Dienste unter Verwendung des Hostnamens bereit.

  3. port - Eine Portnummer, mit der ein bestimmter Prozess erkannt wird, an den eine Internet- oder andere Netzwerknachricht weitergeleitet werden soll, wenn sie auf einem Server eintrifft.

  4. Pfadname - Der Pfad enthält Informationen zu der spezifischen Ressource innerhalb des Hosts, auf die der Webclient zugreifen möchte. Zum Beispiel stackoverflow.com/index.html.

  5. Abfrage - Eine Abfragezeichenfolge folgt der Pfadkomponente und stellt eine Informationszeichenfolge bereit, die die Ressource für einen bestimmten Zweck verwenden kann (z. B. als Parameter für eine Suche oder als zu verarbeitende Daten).

  6. Hash - Der Ankerteil einer URL enthält das Hash-Zeichen (#).

Mit diesen Standortobjekteigenschaften können Sie auf alle diese URL-Komponenten zugreifen

  1. hash - Setzt oder gibt den Ankerteil einer URL zurück.
  2. host - Legt den Hostnamen und den Port einer URL fest oder gibt diesen zurück.
  3. Hostname - Legt den Hostnamen einer URL fest oder gibt diesen zurück.
  4. href -Setzt oder gibt die gesamte URL zurück.
  5. Pfadname - Legt den Pfadnamen einer URL fest oder gibt diesen zurück.
  6. port - Legt die Portnummer fest oder gibt sie zurück, die der Server für eine URL verwendet.
  7. protocol - Legt das Protokoll einer URL fest oder gibt es zurück.
  8. search - Legt den Abfrageteil einer URL fest oder gibt ihn zurück

Wenn Sie eine Seite ändern oder den Benutzer auf eine andere Seite umleiten möchten, können Sie die hrefEigenschaft des Location-Objekts wie folgt verwenden

Sie können die Eigenschaft href des Location-Objekts verwenden.

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

Location Object verfügt auch über diese drei Methoden

  1. assign () - Lädt ein neues Dokument.
  2. reload () - Lädt das aktuelle Dokument neu.
  3. replace () - Ersetzt das aktuelle Dokument durch ein neues

Sie können die Methoden assign () und replace verwenden, um auch auf andere Seiten wie diese umzuleiten

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

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

Unterschiede zwischen assign () und replace () - Der Unterschied zwischen der replace () -Methode und der assign () -Methode () besteht darin, dass replace () die URL des aktuellen Dokuments aus dem Dokumentverlauf entfernt und daher nicht verwendet werden kann Klicken Sie auf die Schaltfläche "Zurück", um zum Originaldokument zurückzukehren. Verwenden Sie daher die Methode assign (), wenn Sie ein neues Dokument laden möchten, und möchten Sie die Option geben, zum Originaldokument zurückzukehren.

Sie können die Eigenschaft href des Standortobjekts mit jQuery auch so ändern

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

Und daher können Sie den Benutzer zu einer anderen URL umleiten.


203

Grundsätzlich ist jQuery nur ein JavaScript- Framework und dient zum Ausführen einiger Dinge wie der Umleitung in diesem Fall auszuführen, können Sie nur reines JavaScript verwenden. In diesem Fall haben Sie also drei Optionen mit Vanille-JavaScript:

1) Unter Verwendung Standort ersetzen , wird dies die aktuelle Geschichte der Seite zu ersetzen, bedeutet , dass es nicht möglich ist , die zu verwenden zurück , um zur ursprünglichen Seite zurückzukehren.

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

2) Mit Standort assign , das wird die Geschichte für Sie hält und mit Zurück - Taste verwenden, können Sie auf die Originalseite zurück:

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

3) Ich empfehle die Verwendung einer dieser vorherigen Methoden, dies könnte jedoch die dritte Option sein, die reines JavaScript verwendet:

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

Sie können auch eine Funktion in jQuery schreiben, um damit umzugehen, dies wird jedoch nicht empfohlen, da es sich nur um eine einzeilige reine JavaScript-Funktion handelt. Sie können auch alle oben genannten Funktionen ohne Fenster verwenden, wenn Sie sich beispielsweise bereits im Fensterbereich window.location.replace("http://stackoverflow.com");befindenlocation.replace("http://stackoverflow.com");

Außerdem zeige ich sie alle auf dem Bild unten:

location.replace location.assign


1
Ich empfehle auch die Verwendung von assign()over, href=da letzteres in einigen Fällen bei mir nicht richtig funktioniert hat.
Marsze


169

Bevor ich anfange, ist jQuery eine JavaScript-Bibliothek, die für die DOM-Manipulation verwendet wird. Sie sollten jQuery also nicht für eine Seitenumleitung verwenden.

Ein Zitat von Jquery.com:

Während jQuery in älteren Browserversionen möglicherweise ohne größere Probleme ausgeführt wird, testen wir jQuery in diesen nicht aktiv und beheben im Allgemeinen keine Fehler, die in ihnen auftreten können.

Es wurde hier gefunden: https://jquery.com/browser-support/

JQuery ist also keine Komplettlösung für die Abwärtskompatibilität.

Die folgende Lösung mit rohem JavaScript funktioniert in allen Browsern und ist seit langem Standard, sodass Sie keine Bibliotheken für die browserübergreifende Unterstützung benötigen.

Diese Seite wird nach 3000 Millisekunden zu Google weitergeleitet

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

Es gibt verschiedene Möglichkeiten:

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"

Wenn Sie "Ersetzen" verwenden, kehrt die Schaltfläche "Zurück" nicht zur Umleitungsseite zurück, als wäre sie nie im Verlauf enthalten. Wenn Sie möchten, dass der Benutzer zur Umleitungsseite zurückkehren kann, verwenden Sie window.location.hrefoderwindow.location.assign . Wenn Sie eine Option verwenden, mit der der Benutzer zur Umleitungsseite zurückkehren kann, denken Sie daran, dass Sie beim Aufrufen der Umleitungsseite zurückgeleitet werden. Berücksichtigen Sie dies, wenn Sie eine Option für Ihre Weiterleitung auswählen. Unter Bedingungen, bei denen die Seite nur umgeleitet wird, wenn der Benutzer eine Aktion ausführt, ist es in Ordnung, die Seite im Verlauf der Zurück-Schaltfläche zu haben. Wenn die Seite jedoch automatisch umgeleitet wird, sollten Sie Ersetzen verwenden, damit der Benutzer die Schaltfläche "Zurück" verwenden kann, ohne zu der Seite zurückgedrängt zu werden, die die Umleitung sendet.

Sie können auch Metadaten verwenden, um eine Seitenumleitung wie folgt auszuführen.

META aktualisieren

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

META Standort

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

BASE Hijacking

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

Auf dieser Seite finden Sie viele weitere Methoden, um Ihren ahnungslosen Client auf eine Seite umzuleiten, die er möglicherweise nicht besuchen möchte (keine davon ist auf jQuery angewiesen):

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

Ich möchte auch darauf hinweisen, dass die Leute nicht zufällig umgeleitet werden möchten. Leiten Sie Personen nur dann weiter, wenn dies unbedingt erforderlich ist. Wenn Sie zufällig Personen umleiten, werden diese nie wieder auf Ihre Website gelangen.

Der nächste Absatz ist hypothetisch:

Möglicherweise werden Sie auch als schädliche Website gemeldet. In diesem Fall warnt der Benutzerbrowser die Benutzer, wenn sie auf einen Link zu Ihrer Website klicken, dass Ihre Website böswillig ist. Was auch passieren kann, ist, dass Suchmaschinen Ihre Bewertung möglicherweise verlieren, wenn Leute eine schlechte Erfahrung auf Ihrer Website melden.

Bitte lesen Sie die Google Webmaster-Richtlinien zu Weiterleitungen: https://support.google.com/webmasters/answer/2721217?hl=de&ref_topic=6001971

Hier ist eine lustige kleine Seite, die dich aus der Seite wirft.

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

Wenn Sie die beiden Seitenbeispiele miteinander kombinieren, erhalten Sie eine kleine Umleitungsschleife, die garantiert, dass Ihr Benutzer Ihre Website nie wieder verwenden möchte.


5
Ich gehe auf seine Anfrage nach jQuery ein, indem ich sage, dass es nicht benötigt wird. JQuery verfügt über viele nützliche Verknüpfungen für JavaScript, es sind jedoch keine Verknüpfungen für Weiterleitungen erforderlich. JQuery ist nur JavaScript. Nichts mehr. Die normale Art, eine Umleitung aufzurufen, funktioniert mit seinen Funktionen unter Verwendung von jQuery.
Patrick W. McMahon

165
var url = 'asdf.html';
window.location.href = url;

145

Sie können dies ohne jQuery tun als:

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

Und wenn Sie nur jQuery möchten, können Sie dies wie folgt tun:

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

JQuery ist wohl eine bessere Idee, da es zukünftige
Browseränderungen

@Epirocks Wenn es in jQuery eine API gibt, die dafür entwickelt wurde, könnte dies ein gültiger Grund sein (obwohl es zweifelhaft ist, ob sich diese API jemals ändern würde), aber das Beispiel hier missbraucht nur eine Funktion von jQuery, in die Sie Nicht-DOM-Objekte und einschließen können Einige Methoden funktionieren weiterhin.
1j01

Die Tatsache, dass "einige Methoden immer noch funktionieren", ist genau das, was ich mit Abstrahieren meine. Ja, Sie können es ohne JQuery tun, aber Sie können alles ohne JQuery tun, es ist nicht der Punkt.
Epirocks

144

Dies funktioniert mit jQuery:

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

Nur weil es funktioniert, heißt das nicht, dass Sie es tun sollten. Dies ist eine sinnlose Indirektion um Einstellungwindow.location
1j01

89

# HTML-Seitenumleitung mit jQuery / JavaScript

Versuchen Sie diesen Beispielcode:

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

Wenn Sie eine vollständige URL als angeben möchten window.location = "www.google.co.in";.


"Using jQuery" ist ähm, ungenau. Das Beispiel der Verwendung einer vollständigen URL funktioniert nicht, da dies keine vollständige URL ist. Da es kein Protokoll gibt, wird es als relative URL interpretiert.
1j01

80

Sie müssen diese Zeile in Ihren Code einfügen:

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

Wenn Sie nicht über jQuery verfügen, verwenden Sie JavaScript:

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

80

Ursprüngliche Frage: "Wie leite ich mit jQuery um?", Daher implementiert die Antwort jQuery >> Kostenloser Anwendungsfall.


So leiten Sie einfach mit JavaScript auf eine Seite um:

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

Oder wenn Sie eine Verzögerung benötigen:

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

Mit jQuery können Sie problemlos Elemente von einer Webseite auswählen. Sie können auf einer Seite alles finden, was Sie möchten, und dann mit jQuery Spezialeffekte hinzufügen, auf Benutzeraktionen reagieren oder Inhalte innerhalb oder außerhalb des ausgewählten Elements ein- und ausblenden. Alle diese Aufgaben beginnen mit dem Wissen, wie ein Element oder ein Ereignis ausgewählt wird .

$('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);
});

Stellen Sie sich vor, jemand hat ein Skript / Plugin mit 10000 Codezeilen geschrieben. Mit jQuery können Sie mit nur ein oder zwei Zeilen eine Verbindung zu diesem Code herstellen.


Javascript-Header: Ist es möglich, die Zeit stattdessen in Sekunden anzugeben?
PythonMaster202

79

Die Frage ist also, wie man eine Weiterleitungsseite erstellt und nicht wie man auf eine Website umleitet.

Sie müssen hierfür nur JavaScript verwenden. Hier ist ein winziger Code, der eine dynamische Umleitungsseite erstellt.

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

Angenommen, Sie fügen dieses Snippet einfach in eine redirect/index.htmlDatei auf Ihrer Website ein und können es so verwenden.

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

Wenn Sie zu diesem Link gehen, werden Sie automatisch zu stackoverflow.com weitergeleitet .

Link zur Dokumentation

Und so erstellen Sie eine einfache Weiterleitungsseite mit JavaScript

Bearbeiten:

Es gibt auch eine Sache zu beachten. Ich habe hinzugefügt , window.location.replacein meinem Code , weil ich denke , dass es eine Umleitung Seite paßt, aber Sie müssen wissen , dass bei der Verwendung window.location.replaceund Sie erhalten umgeleitet, wenn Sie die Zurück - Taste in Ihrem Browser drücken wird es nicht zur Umleitungsseite zurückgekehrt wird Gehen Sie zurück zu der Seite davor und schauen Sie sich diese kleine Demo-Sache an.

Beispiel:

Der Prozess: Home speichern => Seite an Google weiterleiten => Google

Bei Google: google => Zurück-Schaltfläche im Browser => Home speichern

Wenn dies Ihren Bedürfnissen entspricht, sollte alles in Ordnung sein. Wenn Sie die Weiterleitungsseite in den Browserverlauf aufnehmen möchten, ersetzen Sie diese

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

mit

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

74

Fügen Sie in Ihrer Klickfunktion einfach Folgendes hinzu:

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


57

jQuery wird nicht benötigt. Du kannst das:

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

So einfach ist das!

Der beste Weg, um eine HTTP-Anfrage zu initiieren, ist mit document.loacation.href.replace('URL').


52

Schreiben Sie zuerst richtig. Sie möchten innerhalb einer Anwendung nach einem anderen Link suchen, während Ihre Anwendung nach einem anderen Link sucht. Hier ist der Code:

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

Und wenn Sie durch Seiten in Ihrer Anwendung navigieren möchten, habe ich auch Code, wenn Sie möchten.


52

Sie können in jQuery wie folgt umleiten:

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

45

In JavaScript und jQuery können wir den folgenden Code verwenden, um die eine Seite auf eine andere Seite umzuleiten:

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

45

ECMAScript 6 + jQuery, 85 Byte

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

Bitte töte mich nicht, das ist ein Witz. Es ist ein Witz. Das ist ein Witz.

Dies lieferte "eine Antwort auf die Frage" in dem Sinne, dass nach einer Lösung "mit jQuery" gefragt wurde, die in diesem Fall dazu führt, dass sie irgendwie in die Gleichung gezwungen wird.

Ferrybig muss anscheinend den Witz erklären (immer noch ein Scherz, ich bin sicher, es gibt nur begrenzte Optionen auf dem Überprüfungsformular), also ohne weiteres:

Andere Antworten verwenden unnötigerweise jQuery's attr()für die locationoder windowObjekte.

Diese Antwort missbraucht es auch, aber auf lächerlichere Weise. Anstatt den Standort festzulegen attr(), wird hiermit eine Funktion abgerufen, mit der der Standort festgelegt wird.

Die Funktion wird benannt jQueryCode, obwohl nichts jQuery daran ist, und eine Funktion aufgerufensomethingCode ist einfach schrecklich, insbesondere wenn das Etwas nicht einmal eine Sprache ist.

Die "85 Bytes" beziehen sich auf Code Golf. Golfen ist offensichtlich nichts, was Sie außerhalb von Code-Golf tun sollten, und außerdem ist diese Antwort eindeutig nicht wirklich Golf.

Grundsätzlich zusammenzucken.


45

Javascript:

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
Gibt es einen Grund, die URL in jQuery als Variable zu speichern, aber nicht mit Vanilla?
ESR

43

Verwenden von JavaScript:

Methode 1:

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

Methode 2:

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

Verwenden von jQuery:

Methode 1: $ (Ort)

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

Methode 2: Wiederverwendbare Funktion

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

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

41

Hier ist eine zeitverzögerte Umleitung. Sie können die Verzögerungszeit auf einen beliebigen Wert einstellen:

<!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
besser machen Sie dies: setTimeout (function () {window.location.href = " google.com "}, delay);
Dikkini

39

Es gibt drei Möglichkeiten, dies zu tun:

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

und...

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

Die letzte ist für eine herkömmliche Weiterleitung am besten geeignet, da die Seite, zu der Sie gegangen sind, bevor sie in Ihrem Suchverlauf umgeleitet wurde, nicht gespeichert wird. Wenn Sie jedoch nur eine Registerkarte mit JavaScript öffnen möchten, können Sie eine der oben genannten Methoden verwenden. 1

BEARBEITEN: Das windowPräfix ist optional.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.