Blockieren oder erkennen Sie Downloads auf Iframes
P粉819533564
P粉819533564 2023-08-31 21:35:46
0
1
1010
<p>Ich bin auf ein Problem gestoßen, das bei mir sehr häufig vorkommt, aber ich konnte nicht die richtige Lösung finden. </p> <p>Ich habe ein Dokument, das über einen Iframe angezeigt wird. Oben befindet sich eine Symbolleiste, über die Endbenutzer Dokumente herunterladen können. Jetzt möchte ich Informationen über den Download protokollieren (daher benötige ich möglicherweise einige Ereignisse) oder die Download-Option deaktivieren. </p> <p>Ich weiß, dass ich die gesamte Symbolleiste deaktivieren kann, indem ich #toolbar=0 hinzufüge, aber der Endbenutzer kann sie selbst ändern und trotzdem die Dokumentation herunterladen, ohne sie zu protokollieren, daher ist das keine geeignete Lösung für mich. </p>
P粉819533564
P粉819533564

Antworte allen(1)
P粉369196603

如果您对 iframe 不感兴趣,则可以使用 embedobject 标记来防止此类工具栏出现出现。

对于 iframe,如果您想禁用下载功能,您可能最终会得到特定于浏览器的内容,因为不同的浏览器会将 iframe 转换为不同的元素以实际呈现 PDF。如果您确切知道正在处理的浏览器,您可以尝试从下载按钮解除监听器的绑定,这是我在 Chrome 中测试过的解决方案,该解决方案似乎有效:

var old_element = document.getElementById("viewer").shadowRoot.getElementById("toolbar").shadowRoot.getElementById("downloads").shadowRoot.getElementById("download");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);

感谢 Ben D 对这个有关侦听器删除的问题的回答,如果你想沿着日志记录路线走下去,你可以用 addEventListener 替换cloneNode和replaceChild步骤。我认为这仍然会导致足够精明/坚定的用户能够下载 PDF 的问题(查看这篇文章的附加信息:https://www.w3docs.com/snippets/html/how-to-embed-pdf-in-html.html),因此根据您的最终目标,我建议为访客用户呈现 PDF 的静态图像预览,而完整查看器可能仅限于登录用户。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage