javascript - 单击链接后选择继续或不继续

标签 javascript jquery

我正在尝试做一些非常简单的事情:单击链接,弹出模式以继续或取消链接的 URL,继续 URL 或取消(本质上隐藏模式)。我的问题是弹出模式时的“等待”期,提示用户继续或取消。现在,我的代码似乎从未运行过第一个 waitForModalEvent()调用:

<a href="someURL" onclick='return handleClick()'> Click Here </a>


  function handleClick() {
    if (dataChanged()) {
        returnValue = false;
        displayModal();
        returnValue = waitForModalEvent();
        //never called at or past this point. Tested with alert()
        return returnValue;
    } else {
        return true;
    }
  }

  var continueClicked = false;
  var cancelClicked = false;
  function waitForModalEvent() {
    while(!continueClicked && !cancelClicked) {
        waitForModalEvent(); //I know this gives the browser some troubles
    }

    if (continueClicked) {
        return true;
    } else {
        return false;
    }
  }

我知道这段代码是错误的(尤其是可怕的 waitForModalEvent() 永远不会结束的递归调用)。但是,我一直不知道如何解决这个问题,并handleClick() 中返回 true 或 false用户单击“继续”或“取消”后。 我的设置是否使用 <a href>onclick对于我想要实现的目标来说,这本质上是一个糟糕的设置?

我已经阅读了回调,但无法掌握如何在我的情况下使用回调(如果有的话)。将不胜感激任何形式的建议或见解!

最佳答案

您已经生成了一个无限循环,它锁定了 JavaScript 事件循环。在 while 循环完成之前,您在其中测试的变量永远不会改变。

如果你想基于 DOM 对话做一些事情,你必须使用回调来完成。在等待用户交互时,没有办法(在主机环境之外提供像 confirm 这样的函数)进行阻塞。

此处使用回调的一般方法是始终取消单击链接的默认操作,然后让回调复制其功能(或者只是在对话框中放置常规链接)。

关于javascript - 单击链接后选择继续或不继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32873792/

相关文章:

c# - 如何在打字时将焦点设置在文本框的末尾?

javascript - 如何循环遍历 hl7 消息中的所有标题?

javascript - 更改 Bootstrap 选项卡的文本链接?

帕格中的 Javascript

jQuery 按钮切换不起作用

javascript - 使用 JavaScript/PHP 每 5 秒刷新一次 DIV

javascript - Stripe Checkout.js token 回调是否会阻塞,直到付款处理完毕?

javascript - 选择 tr 及其 "tr childs"- 查找 jquery 选择器

javascript - 在 javascript 中更改 outerHTML

javascript - 删除一个 :hover from linked images