javascript - 在背景上释放鼠标时不关闭的模态实现(但仅在单击背景时)

标签 javascript css html w3c

我的元素中有一个小问题 - 我有一个在按下背景时关闭的模式。问题是,例如,如果我按住鼠标选择文本并将鼠标拖出模式,当我释放它时,模式关闭,因为背景已被“按下”。

w3schools 上的这个小演示展示了这个问题。 https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_modal

enter image description here

在这个小演示中,点击背景时关闭模式的代码显然是这个函数:

window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

如何实现它才能在按下背景时关闭,而不是在选择文本时关闭,如上面的屏幕截图所示。

最佳答案

实现此目的的一种方法是将监听器从 onclick 更改为 onmousedown。 解释是当您开始单击时监听器将触发,因此您下一步移动到哪里并不重要。

window.onmousedown = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

编辑

如果您真的想在用户释放鼠标后隐藏模态框,您可以在按下“向下”时存储点击源,并在按下“向上”时隐藏它。 尽管在这种情况下,如果用户开始在模态外单击并在模态中释放鼠标,模态将隐藏。

var clickOnModal = false;
window.onmousedown = function(event) {
  clickOnModal = event.target == modal;
}
window.onmouseup = function() {
  if (clickOnModal) {
    modal.style.display = "none";
  }
}

关于javascript - 在背景上释放鼠标时不关闭的模态实现(但仅在单击背景时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55493865/

相关文章:

javascript - Javascript 表单与 Ajax 一致工作以登录到私有(private) Magento 商店的问题

javascript - "npm isntall"命令存在

javascript - 将参数传递给 meteor 上的不同 jscript

javascript - React 事件和 DOM 事件有什么区别?

javascript - 动态更改 following-mouse-div 的颜色,与其下方的颜色互补

css - 为类添加CSS

html - 渐变 css 边框未在 Internet Explorer 和 Firefox 中显示

html - 设计良好的 Web 应用程序 GUI 框架?

javascript - HTML 表格 - Javascript 选择和取消选择元素(单元格)

javascript - 如何组织css和js文件的缩小和打包以加快网站速度?