Chrome“无法拖动”图标会干扰鼠标悬停事件,我该如何防止这种情况?

2024-01-01

下面是一些使用 JavaScript 创建一堆 div 元素来充当像素的代码。我为 mouseover 事件添加了一个事件侦听器,并检查鼠标是否被按下。如果按下鼠标,我会更改该像素的颜色。最终结果是一个简单的绘图函数。

我相信使用 HTML5 canvas 之类的东西会更有效,但我只是在玩弄 DOM 以及事件的工作原理。

我面临的问题是,Chrome 浏览器经常认为我正在尝试拖动主体或 div,并且不再触发鼠标悬停事件。这似乎是一个不寻常的问题,我想知道是否有人知道如何避免它。

var numOfPxls = 0;
var resolution = "13px"

while (numOfPxls < 1300) {
  const pxl = document.createElement("div");
  pxl.classList.add("pxl");
  pxl.style.cssText = `
      height: ${resolution};
      width: ${resolution};
  `;
  document.querySelector("body").appendChild(pxl);
  pxl.addEventListener("mouseover", function(e){
    // only continue if left click
    if (e.buttons != 1) return; 
    this.style.backgroundColor = "pink";
  });
  numOfPxls++;
}
body {
  margin: 0;
  background-color: black;
}

.pxl {
  display: inline-block;
  background-color: black;
}
<body>

</body>

万一以后有人偶然发现这个问题,我就发现了这个问题。

“mousedown”事件的默认操作是启动拖动。 div 元素无法拖动。要解决此问题,请使用事件的 PreventDefault 方法。

i.e.

add onto

...
  pxl.addEventListener("mouseover", function(e){
    // only continue if left click
    if (e.buttons != 1) return; 
    this.style.backgroundColor = "pink";
  });
...

with:

...
  pxl.addEventListener("mouseover", function(e){
    // only continue if left click
    if (e.buttons != 1) return; 
    this.style.backgroundColor = "pink";
  });
  //new line to prevent drag default on mousedown
  pxl.addEventListener("mousedown", e => e.preventDefault());
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome“无法拖动”图标会干扰鼠标悬停事件,我该如何防止这种情况? 的相关文章

随机推荐

  • SQL Server 数据库中的枚举

    除了简单地为每个枚举创建一个查找表 以 Id 代码和名称作为列 特别是当有每个表中的行很少 我找到了一个article http blog sqlauthority com 2010 03 22 sql server enumeration
  • Gradle 插件如何将方法添加到特定块?

    我想知道 Gradle 如何实现这种机制 将特定方法添加到仅在该块中工作的脚本块 例如 如果我想使用implementation方法 我必须apply plugin java 但我只能用implementation in dependenc
  • Firefox 中带有 javascript 的客户端 xslt

    我正在使用客户端 xslt 将 xml 文件转换为 xhtml 虽然遇到了一些障碍 但除了这个之外 我已经克服了所有障碍 问题是当我有一个像这样的简单 xml 文件时
  • 通过扩展更新 VS Code 用户设置

    我正在尝试创建一个简单的扩展来切换 VS Code 中测试文件的可见性 这是我目前的方法 const testGlobs tests mocks spec js function hideTests const exclude worksp
  • 特定文件的自定义 HTTP 标头

    我正在尝试通过 htaccess 文件为特定文件设置标头 以便让我的服务工作人员访问我的根目录 不幸的是 我没有看到标题出现 也许我没有瞄准该文件 https www stefanklokgieters nl wp content them
  • 如何使用 Atlassian Confluence 的 REST API 发表评论?

    我正在尝试使用 REST API 自动向页面添加评论 我正在使用 Postman 进行测试 我指向这个网址 https atlassian net wiki rest api content https atlassian net wiki
  • 取消投影对象拾取的结果

    网络上有很多对此的参考 包括来自 stackoverflow 的参考 我有一个 unproject 方法 它返回 x y 坐标 返回范围为 1 和 1 我想知道这些值是否正确 如果是这样 那么我该如何处理这些值 乘以相机位置 参考 如何将屏
  • 使用 sklearn 通过 Keras 数据生成器绘制混淆矩阵

    Sklearn 明确定义了如何使用自己的分类模型绘制混淆矩阵plot confusion matrix https scikit learn org stable auto examples model selection plot con
  • componentDidUpdate 与 componentDidMount

    当满足以下条件时 我需要确保输入元素获得焦点 DOM 可用 并且属性发生了变化 问题 我需要将我的代码放入两个中吗componentDidUpdate and componentDidMount要不就componentDidUpdate就足
  • 如何在轴标签和图例中的下标中写入文本?

    我有以下轴标签和图例 plt ylabel ratio 2 plt xlabel n 1 plt legend alpha 1 alpha 2 loc best shadow True 在公式周围加上美元符号 plt xlabel n 1
  • 使用 webdriver 与可爱的编辑器交互

    有谁知道我如何使用 webdriver 与可爱的编辑器交互 我想清除文字 下面的代码不起作用 driver switchTo frame 0 driver switchTo activeEle
  • 是否可以在用户不与网络交互的情况下播放音频?我该怎么做呢? [复制]

    这个问题在这里已经有答案了 我需要我的网页在用户不与页面交互的情况下播放音频剪辑 我知道用户体验很差 不应该这样做 但这就是我的客户所要求的 我也知道浏览器已经阻止了这个功能 所以如果有人能给我建议如何 破解 这个规则 例如事件 我将不胜感
  • 如何在 Sphinx 运行时预处理源文件?

    我已经为我的项目设置了 Sphinx 文档 并希望提取源文件的文档字符串并将它们嵌入到最终文档中 不幸的是 Sphinx 不支持源文件的语言 VHDL VHDL 似乎没有 Sphinx 域 所以我的想法如下 挂钩 Sphinx 运行并在 S
  • 如何在maatwebsite中获取excel数组

    我正在尝试使用最新版本将 Excel 文件转换为数组Laravel Excel https github com Maatwebsite Laravel Excel 3 1 9 下面的代码将下载该文件 return Excel downlo
  • 一个图例的两个独特标记符号

    我想在图例下的 红色实心圆圈 符号旁边添加一个 红色实心正方形 符号 我该如何实现这一目标 我更喜欢坚持使用 pyplot 而不是 pylab 下面是我一直在使用的代码 fig plt figure ax1 fig add axes 0 1
  • 条件逻辑在默认的knockout.js 2.0模板引擎下工作吗?

    下面的条件不适用于我的默认模板与 knockout js 2 0 它只是写出 IF 语句 span if data app viewModel admin home paging page span span else a href a i
  • CPU 总使用率 - 多核系统

    我正在使用 xen 并与xen top我得到了 CPU 总使用率的百分比 NAME STATE CPU sec CPU MEM k MEM MAXMEM k MAXMEM VCPUS NETS NETTX k NETRX k VBDS VB
  • 日期时间差异返回正确的月份甚至年份?

    是否有任何内置函数如何以比仅天数更好的方式获取 DateTime 对象之间的差异 我的意思是 1 个月零 23 天 我发现由于每个月的天数 闰年等不同 计算起来非常困难 谢谢 看一下野田时间 http noda time googlecod
  • “Typemock Isolator”如何模拟静态方法?

    正如你们中的一些人所知 通常不可能在 net 中模拟静态方法 通过模拟 我的意思是用具有相同签名的另一个方法替换类中的方法 通常用于测试目的 用于模拟方法的两种主要方法是将其声明为虚拟方法或在接口中定义它 net 静态方法不允许使用这两种方
  • Chrome“无法拖动”图标会干扰鼠标悬停事件,我该如何防止这种情况?

    下面是一些使用 JavaScript 创建一堆 div 元素来充当像素的代码 我为 mouseover 事件添加了一个事件侦听器 并检查鼠标是否被按下 如果按下鼠标 我会更改该像素的颜色 最终结果是一个简单的绘图函数 我相信使用 HTML5