在移动设备的画布上触发上下文菜单

问题描述

我正在画布上渲染要使用浏览器的本机“另存为”上下文菜单选项保存的内容

这在台式机(您可以转到here并右键单击绿色矩形)上效果很好,但在移动设备上(同一示例)效果不佳。

我尝试使用(使用Konva和react)触发手动附加到画布上的contextmenu事件

stageRef.current?.dispatchEvent(new MouseEvent('contextmenu',{
  bubbles: true,cancelable: false,view: window,button: 2,buttons: 0,clientX: stageRef.current?.getClientRect().x,clientY: stageRef.current?.getClientRect().y,}))

任何想法如何启用此行为?我找不到任何关于为什么它不会在移动设备上发生的消息。

解决方法

如我所见,移动浏览器没有针对任何画布的此类上下文菜单。据我了解,“另存为”不是一种标准,因此可能无法在所有浏览器中使用。

作为解决方案,您可以使用导出选项来制作自己的上下文菜单。

https://konvajs.org/docs/data_and_serialization/Stage_Data_URL.html#page-title

https://konvajs.org/docs/sandbox/Canvas_Context_Menu.html#page-title