javascript - 鼠标右键单击 p5.js 显示浏览器上下文菜单而不是绘图功能

标签 javascript mouseevent p5.js

我在 P5.js 中有这个功能:

function mousePressed() {
    if (mouseButton === LEFT) {
        background(255);
        canvas2.clear();
        canvas3.clear();
    }
    if (mouseButton === RIGHT) {
        canvas3.clear();
        canvas3.fill(0, 0, 0);
        canvas3.stroke(0, 0, 0);
        canvas3.rect(80, 180, 40, 40);
    }
}

它运行良好,但是....当我单击鼠标右键单击时,会显示浏览器上下文菜单(将图像另存为...、复制图像...、检查 Ctrl+Shift+I)。如何禁用此功能或更改行为?

最佳答案

p5.js 的 canvas 元素在创建时方便地分配了 p5Canvas 类。我们可以找到所有具有该类的 DOM 元素,并仅针对这些元素阻止上下文菜单操作。像这样的事情会做:

function setup() {
  for (let element of document.getElementsByClassName("p5Canvas")) {
    element.addEventListener("contextmenu", (e) => e.preventDefault());
  }
}

这样我们就避免了无法在任何地方打开上下文菜单的挫败感,同时仍然能够在不触发上下文菜单的情况下定义我们自己的右键单击功能。

不过,在初始设置后执行代码很重要,因为 Canvas DOM 元素是在 p5 运行时生成的。

关于javascript - 鼠标右键单击 p5.js 显示浏览器上下文菜单而不是绘图功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60853612/

相关文章:

javascript - 访问 ng-repeat 的第一个元素

javascript - 更新数组时 Redux 状态未更新

iOS map 套件 : tap in callout touches annotationView that is rendered under the callout

javascript - 如何从一个点(X 和 Y 坐标)创建一个范围对象?

JavaScript 比较数组来标记特定元素的出现

javascript - 当其他按钮被禁用时隐藏按钮事件

javascript - AngularJS 中跟随鼠标弹出对话框

javascript - 如何选择 saveStrings() 的保存位置

javascript - 使用 p5.js 构建计算器

javascript - 两个数组相等测试