阻止或检测 iframe 上的下载
P粉819533564
P粉819533564 2023-08-31 21:35:46
0
1
853

我遇到了一个对我来说很常见的问题,但我找不到正确的解决方案。

我有一个通过 iframe 显示的文档。顶部有一个工具栏,最终用户可以在其中下载文档。现在我想记录有关下载的信息(因此我可能需要一些事件)或禁用下载选项。

我知道我可以通过添加 #toolbar=0 来禁用整个工具栏,但最终用户可以自己更改它,并且仍然下载文档而不记录它,所以这对我来说不是一个合适的解决方案。

P粉819533564
P粉819533564

全部回复 (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 的静态图像预览,而完整查看器可能仅限于登录用户。

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!