javascript - 等待用户事件

标签 javascript jquery events popup wait

我正在开发一个 javascript 类(使用 jQuery)来创建自定义弹出窗口,但我不知道如何“暂停”脚本以等待用户响应(单击“确定”按钮或取消)

类是这样的:

function Popup()
{
}

Popup.Show = function(text)
{
    var _response;
    /* code to draw the popup elements*/

    $("#button-ok").on("click",function()
    {
        _response = "ok!"
    }

    return _response
}

例如,如果在警报中使用它,该方法总是返回“未定义”,因为它不等待用户点击

alert(Popup.Show("hello"))
//return undefined before the popup appears

我尝试使用这样的 while 循环:

Popup.Show = function(text)
{
    var _response;
    var _wait = true;

    /* code to draw the window */

    $("#button-ok").on("click",function()
    {
        _wait = false;
        _response = "ok!"
    }

    while(_wait){};

    return _response
}

但不起作用(如我所料)

那么,如何等待用户点击呢?

感谢大家

最佳答案

JavaScript 是异步的,你不能“暂停”执行。此外,当 JavaScript 运行时,整个用户界面会卡住,因此用户无法单击按钮。

一旦您注册了点击事件的回调,程序就会继续执行。 脚本中的以下几行

    _wait = false;
    _response = "ok!"

Popup.Show函数返回之前永远不会被执行。 也许this Nettuts article about javascript event programming将帮助您理解范例。

这是修复您的代码的尝试:

Popup.Show = function(text)
{
  /* code to draw the window */

  // bind click event
  var myPopup = this;
  $("#button-ok").on("click",function()
  {
    // this code will be executed after Popup.Show has return
    myPopup.response = "ok!"
    myPopup.Close();
  }
}

关于javascript - 等待用户事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19509296/

相关文章:

javascript - 动态添加、验证和删除表单字段集

javascript - 在 toDataURL 之前缩放图像 - html2canvas

javascript - 更改单个 select2 框的选项背景颜色?

javascript - 数据表不显示 JSON 数据

javascript - 无法将事件附加到上下文片段中的元素

javascript - 按降序对整数的数字进行排序

javascript - Scrollspy - 将导航栏页面链接到外部网址时页面困惑

jquery - 悬停在顶层时如何展开所有菜单项,并在超出范围时再次删除它们?

java - 使用 DOM/batik 进行事件点击 : Recovery the use tag which refers a symbol

events - 移动和桌面设备的实时消息服务