window.location.href nu redirecționează (Programare, Javascript, Evenimente Dom, Window.Location)

user2235124 a intrebat.

Știu că este o întrebare mult discutată, dar nu pot să-mi dau seama de ce nu funcționează la mine.

Aceasta este funcția mea:

function ShowComments(){

 alert("fired");
 var movieShareId = document.getElementById('movieId');
 //alert("found div" + movieShareId.textContent || movieShareId.innerText);
 //alert("redirect location: /comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/");
 window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/";
 var newLocation = window.location;
 //alert("full location: " + window.location);

}

Dacă am alertele necomentate sau dacă am bugzilla de la Mozilla deschis funcționează bine, altfel nu redirecționează către cealaltă pagină.

Aveți vreo idee de ce?

Comentarii

  • Ce rost are ` var newLocation = window.location;`? Nici o linie nu ar trebui să fie executată după schimbarea window.location. –  > Por Denys Séguret.
  • Cum apelați funcția? Faceți altceva în acel moment care ar putea interfera cu schimbarea locației? –  > Por Guffa.
10 răspunsuri
Jose

Dacă apelezi această funcție printr-un buton de trimitere. Acesta poate fi motivul pentru care browserul nu redirecționează. Acesta va rula codul din funcție și apoi va trimite pagina în loc să redirecționeze. În acest caz, schimbați tag-ul type al butonului dvs.

Comentarii

  • Mulțumesc. A ajutat foarte mult. Aveam butonul meu „type” ca fiind „submit”. L-am schimbat în ‘reset’ și a funcționat. –  > Por richie.
  • Exact, problema de acest fel se datorează adesea faptului că se face un click sau un eveniment „enter” și se trimite formularul. –  > Por Alex.
  • Mi-ați făcut ziua mai bună. 12h de căutări pe Google și stackoverflow pentru asta. Top. –  > Por MDaldoss.
  • Destul de interesant, chiar dacă butonul meu nu a fost submit, , nu a funcționat pentru că era în interiorul unui formular. A trebuit să îl mut în afara apoi a funcționat. –  > Por NecipAllef.
  • Aceasta a fost problema mea pentru un buton care NU avea nici un apel de tip, punerea type=’button’ a rezolvat problema. Mulțumesc! –  > Por Ryan Gibbs.
Sruit A.Suk

Din acest răspuns,

window.location.href nu funcționează

trebuie doar să adăugați

return false;

în partea de jos a funcției dvs.

komal thakkar

Soluția de aici:http://www.codeproject.com/Questions/727493/JavaScript-document-location-href-not-working

document.location.href = 'Your url',true;

Denys Séguret

Lipsesc unele paranteze.

Modificați

 window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/";

în

 window.location = "/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/";

Nu se acordă prioritate la || în comparație cu +.

Eliminați, de asemenea, tot ce urmează după window.location atribuirea: acest cod nu ar trebui să fie executat în timp ce pagina se schimbă.

Notă: nu este necesar să setați location.href. Este suficient să setați doar location.

Comentarii

  • @user2235124 Cred că sunt alte probleme în pagina dvs. Iar faptul că ai niște cod după atribuirea locației mă face să suspectez probleme logice mai mari. Poți să construiești un fiddle care să arate problema ta? –  > Por Denys Séguret.
Eldar

window.location.replace este cel mai bun mod de a emula o redirecționare:

function ShowComments(){
    var movieShareId = document.getElementById('movieId');
    window.location.replace("/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/");
}

Mai multe informații despre motivul pentru care window.location.replace este cea mai bună redirecționare în javascript pot fi găsite chiar aici.

Comentarii

  • Ideea prezentată în răspunsul la care faceți legătura este despre urma din istorie. Nu văd ce relevanță are. –  > Por Denys Séguret.
Luis Gouveia

Asigurați-vă că nu trimiteți un „#” la sfârșitul URL-ului. În cazul meu, acest lucru a împiedicat funcționarea window.location.href.

Comentarii

  • yea același lucru aici, nu există nici o soluție nativă depășită pentru această problemă? –  > Por Omar N Shamali.
Ivijan Stefan Stipić

Îți dau o funcție frumoasă pentru această problemă:

function url_redirect(url){
    var X = setTimeout(function(){
        window.location.replace(url);
        return true;
    },300);

    if( window.location = url ){
        clearTimeout(X);
        return true;
    } else {
        if( window.location.href = url ){
            clearTimeout(X);
            return true;
        }else{
            clearTimeout(X);
            window.location.replace(url);
            return true;
        }
    }
    return false;
};

Aceasta este o soluție de lucru universală pentru window.location problemă. Unele browsere intră în problemă cu window.location.href și, de asemenea, uneori se poate întâmpla ca window.location eșuează. De aceea, folosim și window.location.replace() pentru orice caz și timeout pentru „ultima încercare”.

Paulus

Nu puteți utiliza window.location.replace sau document.location.href sau oricare dintre metodele tale preferate de javascript vanilie pentru a redirecționa o pagină către ea însăși.

Așadar, dacă adăugați dinamic calea de redirecționare din back-end sau dacă o extrageți dintr-o etichetă de date, asigurați-vă că verificați la un moment dat dacă există redirecționări către pagina curentă. Ar putea fi la fel de simplu ca:

if(window.location.href == linkout)
{
    location.reload();
}
else
{
    window.location.href = linkout;
}

Aijaj Hussain Ansari

În cazul meu, funcționează așa cum era de așteptat pentru toate browserele după ce am setat intervalul de timp.

setTimeout(function(){document.location.href = "myNextPage.html;"},100);

user12678669

window.location.href nu funcționa în Android. am curățat memoria cache în Android Chrome și funcționează bine. vă sugerez să încercați mai întâi acest lucru înainte de a vă implica în diverse codificări.