php - 如何防止多次绘制模态?

标签 php javascript ajax modal-dialog

这比我知道违背事物精神的通常问题要抽象一些,但我希望我仍然能得到很好的答复。

问题来了。我们有一个用 PHP 编写的相当复杂的 Web 应用程序。目的相对不重要,但简单地说:我们正在使用 Comet/AJAX/JSON/JavaScript/PHP/MySQL(NO jQuery,然而,仅限原生 JavaScript)来呈现实时显示数据的控件.在整个应用程序中,我们使用原生 JavaScript 呈现弹出窗口。测试页面上是否存在具有相同名称的模式并防止创建相同的新版本是相当复杂的逻辑,当然一旦创建,就会创建一个层以防止与下面的链接交互。

问题在于,由于 AJAX 调用从数据库中收集数据并将其组装以进行展示所花费的时间,我们至少有一个模态在呈现在页面上之前可以调用多次。如果用户“双击”所述链接,他们将看到两个模式,一个在另一个之上。我已经能够实际渲染其中的 8-10 个。与最顶层模态的交互似乎被破坏了,因为用户实际上是在最底层模态上影响可折叠标题。开始关闭对话框并到达底部后,您可以看到单击的位置。

所以,我的问题是:防止这种行为的最佳方法是什么?

我考虑过简单地向 onClick 事件添加一个函数,该函数将在第一次点击后从链接中删除 onClick 属性,并有一个较小的超时时间(比如 500 毫秒)。我还考虑过尝试实现位测试逻辑,该逻辑将计算点击次数,并且实际上仅在第一次点击之后首先触发事件,并在模式关闭时重置。

我想知道是否有人有任何想法或建议,或者是否已经解决了类似的问题并且对最佳实践有一些见解以在这种情况下实现我的目标。

非常感谢。

最佳答案

您可以在触发后取消注册点击处理程序:

var element = ...,
myClickHandler = function(event) {
    // ...
    element.removeEventListener('click', myClickHandler, false);
    // ...
}

element.addEventListener('click', myClickHandler, false);

关于php - 如何防止多次绘制模态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359504/

相关文章:

javascript 验证和 ajax 调用同时不起作用

php - Magento Intraship PDF 创建失败

php - 我想计算给定科目的总价并将其存储在数据库中

javascript - 历史 API - Ajax 页面 + Json

javascript - 如何在 Javascript 上测量旋转元素的宽度和高度?

javascript - HTML5 视频自动播放不适用于手机和平板电脑

javascript - 使用 ajax 在 bootstrap carousel 上附加数据

javascript - 如何使用ajax检查数据库中是否已存在电子邮件?

javascript - PHP/HTML/JavaScript - 创建具有从 PHP 到 HTML/JavaScript 的数据属性的按钮

javascript - 按 esc 按键关闭 Bootstrap 弹出窗口