Prevent downloading of posted images

No, I have said it is not a valud option for us.
But it is the most effective way to elude image stealing completly, may be the unique.

This is technically doable in a theme component, should not be to expensive to build maybe a few hundred dollars, open up a topic in marketplace

1 个赞

到目前为止,我们一直在尝试通过使用 @awesomerobot 提供的脚本来阻止上下文菜单的出现,从而阻止图片下载。

<script type="text/discourse-plugin" version="0.8">
const TopicRoute = require("discourse/routes/topic").default;
TopicRoute.reopen({ activate: function() { this._super(); Em.run.next(function() { $('body').on('contextmenu', '.cooked img, .mfp-img', function(e){ return false; }); }); } });
</script>

我们对 discourse 主题进行了自定义,并将脚本添加到了每个页面的页眉中。

但是,自从上次升级到 3.2.0.beta5-dev (67244a2318) 以来,当我们尝试打开一个主题时,一直出现 discourse 的错误,我们不得不删除该脚本。

似乎 discourse 中发生了一些变化,导致它无法正常工作。

1 个赞

我修复了一个更新版本!

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    $("img").on("contextmenu", function(e) {
      e.preventDefault();
    });
  });
</script>

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    $("body").on("contextmenu", ".cooked img, .mfp-img", function(e) {
      e.preventDefault();
    });
  });
</script>
4 个赞

这是由于 Ember 更新所致,该代码片段目前已相当陈旧,需要重写。

2 个赞

谢谢,我会尝试使用新脚本。

看起来它奏效了,至少现在使用灯箱时不会出现上下文菜单。

您仍然可以从帖子中的嵌入式缩略图中下载图片。

您好,@davidkingham

如果我理解您编写的脚本没错的话,第二个脚本可以阻止在灯箱中打开的图片上右键单击时打开上下文菜单。

第一个脚本应该在您右键单击帖子中的缩略图等任何图片时执行相同的操作。

但它不起作用,我仍然可以打开二级菜单并在另一个窗口中打开完整图片。

我尝试在 CSS 中添加以下内容:

img {
    pointer-events: none;
}

这可以阻止打开上下文菜单,但也会阻止您通过单击图片打开灯箱。

有什么问题吗?

隐藏灯箱下的下载链接会很好。

我之前在 CSS 中有这个条目:

.image-source-link {
    display: none;
}

但现在它似乎也不起作用了,因为“下载”和“原始图片”链接仍然显示在灯箱图片下方。

更新:

我修改了第二个脚本,加入了 .lightbox-wrapper,现在它似乎起作用了,右键单击帖子中的图片时不会显示上下文菜单,并且单击图片时可以正确打开灯箱。

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    $("body").on("contextmenu", ".cooked img, .mfp-img, .lightbox-wrapper", function(e) {
      e.preventDefault();
    });
  });
</script>

我应该删除第一个尝试在通用 img 对象上执行相同操作的脚本吗?

如果我用 .mfp-title 替换 .img-source-link 的 CSS,它就可以工作了,现在下载链接也不可见了,但标题也隐藏了。我不明白为什么只隐藏链接不起作用,而隐藏整个标题栏却可以。

.mfp-title {
    display: none;
}

我不确定第一项,因为我没有看到那种行为。但对于图片链接,您可以使用这个:

.image-source-link {
    display: none !important;
}

它会留下一些额外的 · ·,但这是我唯一能隐藏下载链接(并查看全尺寸链接)的方法。

1 个赞

非常感谢。
我不知道 !important 是什么,但它有效,末尾的 .. 似乎也不太重要 :wink:

现在的 CSS 和脚本是这样的,我们得到了期望的行为:网站上的任何图片都无法通过右键单击下载,并且灯箱中的下载链接也被隐藏了。
感谢您的指导。

CSS

.image-source-link
{
    display: none !important;
}

页眉脚本:

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    $("img").on("contextmenu", function(e) {
      e.preventDefault();
    });
  });
</script>
<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    $("body").on("contextmenu", ".cooked img, .mfp-figure, .lightbox-wrapper", function(e) {
      e.preventDefault();
    });
  });
</script>
第一个似乎禁用了网站上其他图片(如图标或头像缩略图)的上下文菜单。
第二个适用于帖子中的图片和灯箱。

1 个赞