搜索

首页  >  问答  >  正文

阻止或检测 iframe 上的下载

<p>我遇到了一个对我来说很常见的问题,但我找不到正确的解决方案。</p> <p>我有一个通过 iframe 显示的文档。顶部有一个工具栏,最终用户可以在其中下载文档。现在我想记录有关下载的信息(因此我可能需要一些事件)或禁用下载选项。</p> <p>我知道我可以通过添加 #toolbar=0 来禁用整个工具栏,但最终用户可以自己更改它,并且仍然下载文档而不记录它,所以这对我来说不是一个合适的解决方案。</p >
P粉819533564P粉819533564455 天前993

全部回复(1)我来回复

  • P粉369196603

    P粉3691966032023-09-01 14:46:55

    如果您对 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< /a>),因此根据您的最终目标,我建议为访客用户呈现 PDF 的静态图像预览,而完整查看器可能仅限于登录用户。

    回复
    0
  • 取消回复