2017-07-18 61 views
0

下面的代码重新加载页面,而不是期望的URL如果确认忽略location.href

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; 
    } 
} 

在警报中,ID被显示为正常,并将该网址是否正确。我可以从警报中复制它,然后使用该文本获得正确的结果。同一页面上使用类似location.href的其他脚本运行正常,但这是唯一使用confirm的脚本。

我也试过

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

,但是网页仍然重新加载。

触发链接是:

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

尝试显示[mcve]。你提供了一些代码,但不是整个链接。 – Quentin

+0

你尝试使用window.open('http://stackoverflow.com','_parent'); – Lekens

+0

'delFile'签名后缺少开放大括号 –

回答

1

触发链接的href仍在联系,因为只有delFile()返回false如果confirm不被接受 - 这是什么造成的页面重新加载。当函数返回true时,链接在重定向发生之前触发。

你希望函数在所有情况下都返回false,所以不要把返回放在else子句中。

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

它看起来像DELFILE()函数缺少大括号,所以我会通过固定着手行动。如果问题仍然存在,请检查JS控制台。另外,发布一个codepen会有帮助。

+0

我希望你找到了它,但不幸的是它是错误的复制和粘贴。大括号存在于脚本中,并通过编辑添加到我的查询中。谢谢 – user2459855

+0

检查JS控制台的错误和/或尝试添加一些断点。你想把它缩小到它失败的原因和原因。 –

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

代替使用

window.location.href ="url" ; 

尝试

window.location.replace("url") 

此方法使得浏览器负载以不同的方式。

我没有测试过这个,但我希望它能起作用。