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
Bis jetzt haben wir versucht, den Bild-Download zu erschweren, indem wir das Erscheinen des Kontextmenüs mit dem obigen Skript von @awesomerobot verhindert haben.
<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>
Wir haben eine Anpassung des Discourse-Themes vorgenommen und das Skript in den Header jeder Seite eingefügt.
Aber seit dem letzten Upgrade auf 3.2.0.beta5-dev (67244a2318) hatten wir Fehler von Discourse, wenn Sie versuchten, ein Thema zu öffnen, und wir mussten das Skript löschen.
Es scheint, dass es einige Änderungen in Discourse gab, die verhindern, dass es funktioniert.
Hier ist eine aktualisierte Version, die ich beheben konnte!
<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>
Dies ist aufgrund von Ember-Updates zu erwarten. Der Codeausschnitt ist zu diesem Zeitpunkt ziemlich alt und muss neu geschrieben werden.
Vielen Dank, ich werde das neue Skript ausprobieren.
Es scheint zu funktionieren, zumindest erscheint das Kontextmenü jetzt nicht mehr, wenn man die Lightbox verwendet.
Sie können das Bild immer noch von den eingebetteten Miniaturansichten im Beitrag herunterladen.
Hallo @davidkingham
Wenn ich das von Ihnen geschriebene Skript richtig verstehe, verhindert das zweite die Anzeige des Kontextmenüs, wenn Sie mit der rechten Maustaste auf ein Bild klicken, das in der Lightbox geöffnet wurde.
Das erste sollte dasselbe tun, wenn Sie mit der rechten Maustaste auf ein beliebiges Bild klicken, z. B. auf die Miniaturansicht im Beitrag.
Aber es funktioniert nicht, ich kann immer noch das sekundäre Menü öffnen und das vollständige Bild in einem anderen Fenster öffnen.
Ich habe versucht, dies in CSS einzufügen:
img {
pointer-events: none;
}
Es verhindert die Anzeige des Kontextmenüs, aber es verhindert auch, dass Sie auf das Bild klicken können, um die Lightbox zu öffnen.
Was ist falsch?
Es wäre großartig, die Download-Links unter der Lightbox auszublenden.
Ich hatte zuvor diesen Eintrag in CSS:
.image-source-link
{
display: none;
}
Aber jetzt scheint es auch nicht mehr zu funktionieren, da die Links Download und Originalbild trotzdem unter dem Lightbox-Bild angezeigt werden.
UPDATE:
Ich habe das zweite Skript modifiziert, um auch .lightbox-wrapper einzuschließen, und jetzt scheint es zu funktionieren und das Kontextmenü wird nicht angezeigt, wenn Sie mit der rechten Maustaste auf ein Bild in einem Beitrag klicken, und es öffnet korrekt die Lightbox, wenn Sie auf das Bild klicken.
<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>
Sollte ich das erste Skript löschen, das versucht, dasselbe für ein generisches img-Objekt zu tun?
Wenn ich das CSS von .img-source-link durch .mfp-title ersetze, funktioniert es und die Download-Links sind nicht mehr sichtbar, aber der Titel wird auch ausgeblendet. Ich verstehe nicht, warum das Ausblenden nur der Links nicht funktioniert und es funktioniert, wenn Sie die gesamte Titelleiste ausblenden.
.mfp-title
{
display: none;
}
Ich bin mir beim ersten Punkt nicht sicher, da ich dieses Verhalten nicht sehe. Aber für den Bildlink können Sie Folgendes verwenden:
.image-source-link {
display: none !important;
}
Es bleiben einige zusätzliche · · übrig, aber das ist die einzige Möglichkeit, nur den Download-Link (und den Link zur Vollbildansicht) auszublenden.
Vielen Dank.\nIch weiß nicht, was !important ist, aber es funktioniert, die nachgestellten .. scheinen nicht so wichtig zu sein ;)\n\nSo sehen jetzt das CSS und die Skripte aus und wir erzielen das gewünschte Verhalten: Keine der Bilder auf der Website kann durch Rechtsklick heruntergeladen werden und die Download-Links in der Lightbox sind ausgeblendet.\nVielen Dank für Ihre Anleitung.\n\nCSS\n\n.image-source-link\n{\n display: none !important;\n}\n\n\nHeader-Skripte:\n\n<script type=\"text/discourse-plugin\" version=\"0.8\">\n api.onPageChange((url, title) => {\n $(\"img\").on(\"contextmenu\", function(e) {\n e.preventDefault();\n });\n });\n</script>\n<script type=\"text/discourse-plugin\" version=\"0.8\">\n api.onPageChange((url, title) => {\n $(\"body\").on(\"contextmenu\", \".cooked img, .mfp-figure, .lightbox-wrapper\", function(e) {\n e.preventDefault();\n });\n });\n</script>\n\nDas erste scheint das Kontextmenü für andere Bilder auf der Website wie Symbole oder Avatar-Thumbnails zu deaktivieren.\n\nDas zweite funktioniert für Bilder in einem Beitrag und die Lightbox.\n\n
