如果确认忽略location.href

时间:2017-07-18 15:05:31

标签: javascript confirm

以下代码重新加载页面而不是所需的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的同一页面上的其他脚本工作正常,但这是唯一一个使用confirm。

我也试过

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

但页面仍在重新加载。

触发链接是:

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

4 个答案:

答案 0 :(得分:1)

触发链接上的href仍然被关联,因为delFile()仅在confirm未被接受时才返回false - 导致页面重新加载的原因是什么。当函数返回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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

看起来delFile()函数缺少开口大括号,所以我首先修复它。如果问题仍然存在,请检查JS控制台。另外,发布一个codepen会很有帮助。

答案 2 :(得分: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;
    }
    }

答案 3 :(得分:-1)

而不是使用

window.location.href ="url" ;

尝试

window.location.replace("url")

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

我还没有对此进行测试,但我希望它有效。