【问题标题】:if confirm ignores location.href如果确认忽略 location.href
【发布时间】:2017-07-18 15:05:31
【问题描述】:

以下代码重新加载页面而不是所需的 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://stackoverflow.com";

但页面仍会重新加载。

触发链接是:

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

【问题讨论】:

标签: javascript confirm


【解决方案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>

【讨论】:

    【解决方案2】:
        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】:

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

      【讨论】:

      • 我希望你已经找到它,但不幸的是它是一个错误的复制和粘贴。大括号确实存在于脚本中,并且已通过编辑添加到我的查询中。谢谢
      • 检查 JS 控制台是否有错误和/或尝试添加一些断点。您想将其缩小到失败的步骤以及失败的原因。
      猜你喜欢
      • 2011-07-31
      • 1970-01-01
      • 2021-10-15
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多