如何禁用右键单击保存一个特定图像

问题描述:

我正在运行一个亚洲电子商务网站,用户发布他们的产品图像。有没有办法禁用右键单击页面上的1个特定图像?如何禁用右键单击保存一个特定图像

E.g.查看产品时,有一个大图像,然后是产品的一些缩略图。当试图右键点击大图时,我想禁用右键单击,但如果他们尝试右键单击缩略图,我不想禁用右键单击。

感谢

PS - 我完全理解可用性原因,不要禁用右键单击,但版权和盗窃形象在亚洲比北美国家一个更大的问题。此外,这对卖家而言更加安心,而不是实际保护内容。

+0

请理解,即使右击完全禁用,它是完全微不足道下载任何图像等多种方式 – philfreo 2009-11-05 05:49:05

+1

他指出它不是真正为安全起见,反正。 – Ikke 2009-11-05 05:53:42

+0

水印图像,在Photoshop中花12秒。 – epascarello 2009-11-05 12:38:05

尽管它不符合W3C标准,但oncontextmenu="return false;"作为属性应该完全符合您的要求。

+2

这仍然会让别人很容易绕过。一个更强大的解决方案是手动提供有版权的图像(将图像作为本地文件存储,并将所有对图像的请求重定向到执行权限检查的处理程序,并且至多返回图像的二进制文件)。采取更安全的方式,这不难,但要有一定的创造力。通过将图像分解成多个部分并使用CSS将它们拼合在一起来拼图显示图像。使用Flash或类似技术提供图像。 在一天结束时,请记住任何可以截取屏幕截图的东西都可能被盗。 – 2009-11-05 05:58:33

+0

谢谢史蒂文。雅我明白,绕过几乎所有这些Javascript“内容保护”方法都非常容易。我只是需要一些简单的东西来让顾客开心,这种oncontextmenu属性已经成功了。谢谢! – justinl 2009-11-05 06:09:14

+0

大多数浏览器都可以在浏览器设置中覆盖此设置,因此很浪费。 – epascarello 2009-11-05 12:37:04

完全阻止人是徒劳的,但是,我的首选方法至少使它稍微困难一点是将div放在图像的顶部。

<div id="image-container" style="postion: relative;"> 
    <img src="" alt="" /> 
    <div style="width: 100%; height: 100%; position: absolute; top: 0; left: 0"></div> 
</div> 

玩弄它得到你想要的。为了使它看起来更加语义化,可以将文本置于空'div'图像版权',然后在其上执行text-indent: -9999px。我经常试着将一个空白的元素变成语义上的东西。

说到这里,我最喜欢绕过做这个事情的人(例如eBay)的方式是Firefox的插件Nuke Anything Enhanced。在图像技巧上使用div会使我绕过约2秒钟。

+0

嗨亚历克斯, 我试过你的div容器方法,但遇到麻烦让它工作。无论哪种方式感谢您的建议:) – justinl 2009-11-05 06:09:47

+0

在当前的IE,FF和Chrome中效果很好:)谢谢! – rustyx 2014-08-16 18:49:22

+0

正是我在找什么,谢谢:) – asologor 2015-01-29 19:22:49

如果您在网络上发布图片,则不存在防止某人保存副本的万无一失的方法。它必须通过电线发送才能显示出来,并且确定的用户可以使用Wireshark或Fiddler等工具或任何浏览器调试框架(如Firebug)拦截它,即使您找到了禁用右键单击并拖放到桌面。

你可以使得是非常稍微困难,但努力是不值得的,恕我直言。

+1

我个人理解你的观点,但这只是......在亚洲完全不同的思维模式。我认为死于网站所有者的完全不同的文化,直到他们相信我能够说出“你不能右键点击”将会让人安心。此外,亚洲的Facebook没有启用右键单击。这只是规范。 – justinl 2009-11-05 05:54:11

+1

亚洲的打印屏幕按钮是否被禁用?你知道这个术语吗?这就是所谓的'通过默默无闻的安全',它唯一证明的影响是不满的用户。无论如何,真正想要“窃取”图像的人都会这样做。甚至可能有些人不会首先偷盗他们,只是为了证明一个观点。请记住:为Minas Morgul的客户工作被认为是有害的;) – anddoutoi 2009-11-05 09:24:16

如果你要的只是防止用户保存图像的东西,你可以做,通过使用指针事件CSS属性:

img { 
    pointer-events: none; 
} 

本质上那是什么要做的是阻止任何鼠标事件IMG元素。你仍然会得到一个对话框,但这与背景图像一样。

https://developer.mozilla.org/pt-BR/docs/Web/CSS/pointer-eventshttps://css-tricks.com/almanac/properties/p/pointer-events/