作为数据探索工具的一部分,我正在将PNG或SVG图像绘制到画布上。该部分工作正常,我理解一旦绘制到画布上,图像将不再是矢量格式。但是,我希望用户能够通过右键单击画布并使用标准的另存为上下文菜单来下载并保存原始的PNG或SVG图像。有什么方法可以覆盖另存为右键单击菜单选项的默认行为?

最佳答案

有什么方法可以覆盖另存为的默认行为
  右键菜单选项? (我希望专门覆盖
  另存为选项,而不是整个上下文菜单)


不幸的是,这是行不通的。只要例如contextmenu处理程序未捕获右键单击,浏览器就会弹出一个内部生成的菜单,我们对此没有读/写访问权限。

您总是可以使用contextmenu事件来模拟菜单,但是由于我们无法从内部生成的上下文菜单中读取实际内容,因此不可能使其看起来完全相同(例如,由于各种插件内容,主题外观,版本更改)等等。)。当然,这并不是说您无法完全制作替换菜单。

我建议考虑,如果可能的话,您只需将SVG作为图像直接插入DOM而不是画布中即可。这样,浏览器将为您提供正确的上下文菜单(音频和视频等也是如此)。可以选择在其中提供一个按钮/图标/链接,例如转角以保存原始图像。

09-18 23:55