2017-07-18 13 views
0

Der folgende Code lädt die Seite, anstatt die gewünschte URLwenn bestätigen location.href ignoriert

function delFile(name,id) { 
    if (confirm('Are you sure you want to DELETE '+name+'?')) { 
     location.href='/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id ; 
     alert('/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id); 
    } 
    else { 
     return false; 
    } 
} 

In der Warnung wird die ID wie gezeigt korrekt hinzugefügt wird und die URL korrekt ist. Ich kann es aus der Warnung kopieren und dann diesen Text verwenden, um das richtige Ergebnis zu erhalten. Andere Skripte auf derselben Seite, die ähnliche location.href verwenden, funktionieren einwandfrei, aber dies ist das einzige, das confirm verwendet.

Ich habe auch versucht,

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

Aber die Seite neu lädt noch.

Das auslösende Link lautet:

onClick="return delFile('Bill','1234') 
+0

Versuchen Sie, ein [mcve] anzuzeigen. Sie haben Teile Ihres Codes bereitgestellt, aber nicht den gesamten Link. – Quentin

+0

haben Sie versucht, window.open ('http: //stackoverflow.com',' parent ') zu verwenden; – Lekens

+0

Eröffnung geschweiften Klammern fehlt gerade nach 'delFile' Unterschrift –

Antwort

1

Die href auf dem auslösenden Link noch verbunden wird, weil delFile() nur falsch zurück, wenn die confirm nicht akzeptiert wird - das ist, was die Seite neu geladen verursacht. Wenn die Funktion true zurückgibt, wird die Verbindung ausgelöst, bevor die Weiterleitung erfolgt.

Sie möchten, dass die Funktion in allen Fällen false zurückgibt, also stellen Sie die Rückgabe nicht in eine else Klausel.

function delFile(name, id) { 
 
    if (confirm('Are you sure you want to DELETE ' + name + '?')) { 
 
    location.href = '/cgi-bin/cnc.cgi?phrsrg~038919718485478~' + id; 
 
    alert('/cgi-bin/cnc.cgi?phrsrg~038919718485478~' + id); 
 
    } 
 
    return false; // always, since you always want to prevent the link's default behavior. (Could also use event.preventDefault here.) 
 
}
<a href="/" onClick="return delFile('Bill','1234')">test</a>

0

Es sieht aus wie die delfile() Funktion, um die Öffnung geschweifte Klammer fehlt, also würde ich durch die Festsetzung, dass beginnen. Wenn das Problem weiterhin besteht, überprüfen Sie die JS-Konsole. Es wäre auch hilfreich, einen Codepen zu posten.

+0

Ich hatte gehofft, Sie hätten es gefunden, aber leider war es eine fehlerhafte Kopie und einfügen. Die geschweifte Klammer existiert im Skript und wurde über Bearbeiten zu meiner Abfrage hinzugefügt. Danke – user2459855

+0

Überprüfen Sie die JS-Konsole auf Fehler und/oder versuchen Sie, einige Haltepunkte hinzuzufügen. Sie möchten das auf den Schritt eingrenzen und warum. –

0
function delFile(name,id){ 
    if (confirm('Are you sure you want to DELETE '+name+'?')) { 
    /* var fullpath = better to use the full url name/link;*/ 
    var url = '/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id; 
    window.open(url, '_parent'); 
     alert('/cgi-bin/cnc.cgi?phrsrg~038919718485478~'+id); 
    } 
    else { 
     return false; 
    } 
    } 
-1

Statt mit

window.location.href ="url" ; 

window.location.replace("url") 

Diese Methode Schließen Sie den Browser laden auf eine andere Art und Weise macht.

Ich habe das nicht getestet, aber ich hoffe, es funktioniert.

Verwandte Themen