Wie kann ich den Benutzer mit jQuery oder reinem JavaScript von einer Seite auf eine andere umleiten?
Antworten
Zu viele Anzeigen?Man kann nicht einfach mit jQuery umleiten
jQuery ist nicht erforderlich, und window.location.replace(...)
simuliert am besten eine HTTP-Umleitung.
window.location.replace(...)
ist besser als die Verwendung von window.location.href
denn replace()
behält die ursprüngliche Seite nicht im Sitzungsverlauf, was bedeutet, dass der Benutzer nicht in einem nicht enden wollenden Zurück-Button-Fiasko stecken bleibt.
Wenn Sie simulieren wollen, dass jemand auf einen Link klickt, verwenden Sie location.href
Wenn Sie eine HTTP-Umleitung simulieren wollen, 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";
Standard-"Vanilla"-JavaScript-Verfahren zur Weiterleitung einer Seite
window.location.href = 'newPage.html';
Oder einfacher ausgedrückt: (da window
ist global)
location.href = 'newPage.html';
Wenn Sie hier sind, weil Sie verlieren HTTP_REFERER bei der Weiterleitung, lesen Sie weiter:
(Ansonsten ignorieren Sie diesen letzten Teil)
Der folgende Abschnitt richtet sich an diejenigen, die HTTP_REFERER
als eine von vielen Sicherheitsmaßnahmen (obwohl es keine großartige Schutzmaßnahme ist). Wenn Sie Internet Explorer 8 oder niedriger sind, gehen diese Variablen bei jeder Form der JavaScript-Seitenumleitung (location.href, usw.) verloren.
Im Folgenden werden wir eine Alternative für IE8 und niedriger damit wir HTTP_REFERER nicht verlieren. Ansonsten können Sie fast immer einfach window.location.href
.
Prüfung gegen HTTP_REFERER
(Einfügen von URLs, Sitzungen, usw.) puede helfen zu erkennen, ob eine Anfrage legitim ist. ( Nota: es gibt auch Möglichkeiten, diese Referrer zu umgehen / zu fälschen, wie der Link von droop in den Kommentaren zeigt)
Einfache browserübergreifende Testlösung (Fallback auf window.location.href für Internet Explorer 9+ und alle anderen Browser)
Verwendung: 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;
}
}
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')
- See previous answers
- Weitere Antworten anzeigen