📜  禁用保存图像选项 - Javascript (1)

📅  最后修改于: 2023-12-03 14:56:32.621000             🧑  作者: Mango

禁用保存图像选项 - Javascript

在Web开发过程中,我们经常需要在网页中展示图片。然而,一旦图片展示出来,用户很容易就可以通过右键菜单将图片保存到本地。对于一些涉及敏感信息的网站来说,这种保存操作可能是不允许的,因此,有时候我们需要禁用保存图像选项。

在Javascript中,我们可以通过以下几种方式来实现禁用保存图像选项。

1. 阻止右键菜单弹出

我们可以通过阻止右键菜单的弹出,来防止用户通过右键保存图片。具体实现如下:

// 阻止右键菜单弹出
document.addEventListener("contextmenu", function(e){
    e.preventDefault();
}, false);

在这个代码片段中,我们通过给document添加一个contextmenu事件监听器,在事件发生时调用preventDefault()方法来阻止右键菜单的弹出。

然而,这种方式存在一些问题,比如用户可以通过其他方式来获取图片的URL并进行保存。

2. 使用CSS禁用右键菜单

我们可以通过CSS来禁用右键菜单,具体代码如下:

/* 禁用右键菜单 */
img {
  -webkit-touch-callout: none; /* iOS禁止长按弹出菜单 */
  -webkit-user-select: none; /* 禁止选中文字 */
  -moz-user-select: none;
  -khtml-user-select: none;
  user-select: none;
}

通过给img元素添加上述CSS样式,我们可以禁用图片默认的右键菜单。但是,这种方式同样存在缺陷,因为用户仍然可以通过查看页面源代码或者其他方式获取图片的URL并进行保存。

3. 通过Canvas显示图片

我们可以使用Canvas来显示图片,并禁用Canvas元素的右键菜单,从而达到禁用保存图片的目的。具体代码如下:

// 通过Canvas显示图片
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
var img = new Image();
img.onload = function() {
    canvas.width = img.width;
    canvas.height = img.height;
    ctx.drawImage(img,0,0);
    document.body.appendChild(canvas);
};
img.src = "image.png";

// 禁用Canvas元素的右键菜单
canvas.addEventListener("contextmenu", function(e){
    e.preventDefault();
}, false);

通过将图片绘制在Canvas上,我们可以避免直接在HTML中显示图片,从而达到禁用保存图片的目的。同时,我们还给Canvas元素添加了contextmenu事件监听器,来阻止右键菜单的弹出。

总的来说,虽然以上三种方式都存在缺陷,但是它们可以在一定程度上防止用户通过右键保存图片,对于简单的防盗图功能来说还是非常实用的。