【发布时间】:2020-07-21 12:21:23
【问题描述】:
第一个能给我有用的东西的人,我真的会给 Venmo 10 美元。请帮忙。
我有一个 iframe,我想阻止人们下载内容。我已经使用了#toolbar=0,但用户仍然可以右键单击下载。我知道完全阻止下载是不可能的,但我只是在寻找一种解决方案来阻止基本用户轻松下载。
我尝试用透明图像覆盖 iframe 以阻止右键单击,但这使得无法滚动浏览文档。
现在的目标:检测到右键单击iframe,并禁用上下文菜单。
我现在的代码是:
componentDidMount(){
document.getElementById('myIframe').addEventListener("click",this.handleClick);
}
componentWillUnmount(){
document.getElementById("myIframe").removeEventListener("click", this.handleClick);
}
render(){
return(
<div className="PDFs">
<iframe id="myIframe" src={PDF + "#toolbar=0"} width="100%" height="800px" className="Viewer"/>
</div>
);
}
但只有当您的鼠标位于 iframe 轮廓的确切像素线上时,它才有效。不是很有用。
如果您能找到任何方法来阻止下载 PDF 而不将 PDF 转换为任何内容并且不阻止对 PDF 的滚动访问,我会接受的。
更多信息:将显示此内容的页面将仅显示此查看器,不会显示其他内容。如果我可以禁用整个页面的上下文菜单,那就太好了。
我也已经尝试过使用“onClickDown”和“onContextMenu”,但它们都不起作用,除非我用错了。
【问题讨论】:
-
你所要求的基本上是不可能的。即使您确实禁用了上下文菜单,用户仍然可以打开 devtools,检查网络请求并以这种方式下载数据。只要您的数据从某个服务器传输到用户的浏览器,此时它就与“他们的数据”一样好 - 他们可以用它做任何他们想做的事情(当然可能会产生法律后果)。
-
完全没问题。我只是想阻止基本用户点击几下就可以直接下载按钮。如果你有办法做到这一点,我很乐意听到。
-
我查看了 CSP 设置,但您也无法使用这些设置。 Iframe 模拟另一个网站,因此您不能只是更改它的内容。为什么你需要这个网站的 iframe,我可以询问 iframe 源的链接吗?
-
嗯,有道理。我只需要一个 iframe 来显示 pdf。如果您知道一种显示更可编辑的 pdf 的方式,那就太好了。 iframe 源将只显示 pdf,因此任何 pdf 都可以代替它。如果你需要占位符 pdf,那么我可以给你发我的数学作业哈哈哈。