如果确认忽略 location.href

if confirm ignores location.href

以下代码重新加载页面而不是所需的 URL

    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 显示为已正确添加并且 URL 正确。我可以从警报中复制它,然后使用该文本获得正确的结果。同一页面上使用类似 location.href 的其他脚本运行良好,但这是唯一使用确认的脚本。

我也试过了

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

但是页面仍然重新加载。

触发link是:

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

delFile() 函数似乎缺少左大括号,所以我将从修复它开始。如果问题仍然存在,请检查 JS 控制台。另外,发布代码笔会很有帮助。

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

触发 link 的 href 仍在 linked 中,因为如果 confirm 未被接受,delFile() 仅 return 为假-- 这就是导致页面重新加载的原因。当函数 return 为真时,link 在重定向发生之前触发。

您希望函数在所有情况下都为 return false,因此不要将 return 放在 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>