【发布时间】:2015-01-06 01:04:16
【问题描述】:
我正在编写一个脚本来防止人们能够右键单击图像。一旦他们单击图像,我就会设置一个警报框以显示图像受版权保护。为了尝试解释这是如何工作的,图像位于模型中,直到单击另一个 ID(通过 AJAX 完成)才会出现在 DOM 中。我的脚本一直等到单击 ID 并加载模型,然后执行函数以显示警报(如果有右键单击)。问题是,可以单击多个按钮以使模型出现,因此,在我的代码中,我针对每个按钮,如果单击其中任何一个,函数就会触发。当您单击 ID 使模型出现,关闭模型,然后单击另一个 ID 使相同模型出现时,会出现此问题。完成后,警报会显示多次。因此,如果您花一些时间单击所有触发该功能的 ID,当您最终右键单击图像时,警报可能会显示 10-20 次。我正在寻找一种方法使更改只显示一次,无论该功能执行多少次。
我的脚本如下:
function imageClickerz( ) {
$( "#sb-wrapper-inner" ).each(function( index ) {
$('#sb-wrapper-inner, #sb-nav-previous, #sb-nav-next').mousedown(function(event) {
switch (event.which) {
case 3:
alert('Sorry, our images are copyrighted.');
break;
}
});
});
}
$("#product_photo").hover(function(){
setTimeout(function (){
$('div[id^=vZoomMagnifier], img[id^=alternate_product_photo_], .vCSS_img_product_photo, .vCSS_img_larger_photo, #product_photo, #sb-nav-previous, #sb-nav-next, ').click(function(event){
setTimeout(function (){
imageClickerz( )
}, 800);
});
}, 100);
});
【问题讨论】:
-
我正在编写一个脚本来防止人们能够右键单击图像。人们已经这样做了 几十年总是失败。现在是2015年,你可以放弃了。新年快乐。
-
阻止右键单击具有侵入性且烦人,请改用画布
-
别忘了屏蔽截图!
-
即使一部分用户可以绕过这个保护,我仍然会说它会阻止大多数用户,或者至少让他们认为保存这些图像是不合适的。即使禁用上下文菜单主要会给人一种虚假的安全感,它确实会降低图像被盗的可能性。
-
只是一个想法...将图像作为
CSS背景放在<div>上,然后如果用户右键单击,他们将永远无法选择下载图像。您可以在 StackOverflow 徽标上试试这个。
标签: javascript jquery html ajax