gpt4 book ai didi

javascript - 在移动 Chrome 上禁用 Canvas 元素上的默认上下文菜单。 (我在 Android Chrome 上试过)

转载 作者:行者123 更新时间:2023-12-03 06:59:38 26 4
gpt4 key购买 nike

我是 Web 开发的新手。请帮我。
有什么方法可以像在图像上一样在 Canvas 上启用默认上下文菜单(下载图像/共享图像)?
在 PC 浏览器上,我们可以右键单击并将 Canvas 另存为图像。但是在移动版 chrome 上,长按 Canvas 不会弹出上下文菜单。
是否可以在 Canvas 上触发与图像元素相同的上下文菜单?
我对此进行了大量研究,但没有找到正确的答案。我不想要自定义上下文菜单。我需要默认的。

最佳答案

您无法在移动设备上激活上下文菜单,就像在您的 PC 上一样。而且我认为 Safari 甚至没有一般的 Canvas 上下文菜单。但是你可以简单地使用“toDataURL”,你说它抛出了一个错误,我不知道你在使用什么。但我知道它的这种实现,不需要服务器等。我为你提供了一个代码笔(Stackoverflow 片段停用了 iframe 下载)。只需打开 Canvas 的上下文菜单,它就会下载而无需您进行任何操作,也可以在移动设备上使用(长按它)。只是一个自定义上下文菜单,您可以在互联网上找到大量文章。
https://codepen.io/raqhael/pen/RwRGmQx(我在其他地方使用了一个函数,该函数的所有功劳都归于 owencm )

<!DOCTYPE html>
<html>
<head>

<meta charset="utf-8" />
<title>URL Demo</title>
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
background-color: #f0f0f0;
}

#buttons {
position: absolute;
top: 5px;
left: 10px;
display:none;
}

#buttons > input {
padding: 10px;
display: block;
margin-top: 5px;
}
</style>
</head>

<body>
<div id="container"></div>
<div id="buttons">
<button id="save">
Save as image
</button>
</div>
<canvas id="cv"></canvas>
<script>
let can = document.getElementById("cv");
let ctx = can.getContext("2d");
var width = window.innerWidth;
var height = window.innerHeight;

ctx.beginPath();
ctx.rect(20, 20, 150, 100);
ctx.fillStyle = "red";
ctx.fill();

ctx.beginPath();
ctx.rect(40, 40, 150, 100);
ctx.fillStyle = "blue";
ctx.fill();

// function from https://stackoverflow.com/a/15832662/512042
function downloadURI(uri, name) {
var link = document.createElement('a');
link.download = name;
link.href = uri;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
delete link;
}

can.oncontextmenu = () => {

var dataURL = can.toDataURL();
downloadURI(dataURL, 'canvas.png');
};
</script>
</body>
</html>

关于javascript - 在移动 Chrome 上禁用 Canvas 元素上的默认上下文菜单。 (我在 Android Chrome 上试过),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64459180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com