css - 覆盖 Canvas "steals"上下文菜单

标签 css html canvas

我试图在非透明 HTML 之上绘制覆盖 Canvas ,但 Canvas “窃取”了上下文菜单。

是否可以通过某种方式忽略 Canvas 的上下文菜单?

制作了一个显示问题的 jsfiddle:http://jsfiddle.net/75x8uwxf/1/

HTML:

<img src="https://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png" />
<canvas id="c" height="200" width="200" />

CSS:

#c { z-index: 1; position:absolute;top:0;left:0; outline: 2px dashed green; }

JS:

var c = document.getElementById("c").getContext("2d");
c.strokeStyle = "salmon";
c.beginPath();
c.lineWidth = 3;
c.moveTo(0, 160);
c.lineTo(150,160);
c.stroke();

如果您在绿色虚线区域内右键单击(场景 A),您将看到使用了 Canvas 的菜单。如果您在绿色虚线区域外单击(场景 B),您将获得常规上下文。

我希望它表现得像场景 B,即使您在绿色虚线区域内右键单击也是如此。

这有可能吗?

最佳答案

假设您不需要与canvas 进行任何用户交互,您可以在canvas 元素上使用pointer-events: none; :

var c = document.getElementById("c").getContext("2d");
c.strokeStyle = "salmon";
c.beginPath();
c.lineWidth = 3;
c.moveTo(0, 160);
c.lineTo(150,160);
c.stroke();
#c { z-index: 1; position:absolute;top:0;left:0; outline: 2px dashed green; }

canvas {
    pointer-events: none;
}
<img src="https://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png" />
<canvas id="c" height="200" width="200" />

关于css - 覆盖 Canvas "steals"上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159459/

相关文章:

javascript - Window.open + 移动设备 + Canvas == 不工作?

javascript - 循环遍历具有特定样式的所有元素

CSS 圆 Angular 在 Safari/Opera 中不起作用

php - 在PHP中更改所选选项的文本颜色

html - iframe 的透明度

javascript - 修改 jQuery 创建的输入

html - 嵌套的父子悬停问题

javascript - Prestashop 中未添加优惠券(结帐页面)

javascript - 图表 Canvas js设置动态数组

javascript - 在 JavaScript 中从图像中读取像素数据会返回半透明像素的意外结果