【发布时间】:2021-11-06 03:12:45
【问题描述】:
我在使用标签的客户网站上有 pdf,客户要求我阻止用户右键单击文档以阻止他们保存文件(是的,我知道这很愚蠢,但他们坚持认为这是他们想要)。
我已经研究了许多实现此目的的方法,但似乎都没有奏效(一些工作阻止滚动)。
我也想禁用 CRTL+S。
【问题讨论】:
标签: javascript html css pdf embed
我在使用标签的客户网站上有 pdf,客户要求我阻止用户右键单击文档以阻止他们保存文件(是的,我知道这很愚蠢,但他们坚持认为这是他们想要)。
我已经研究了许多实现此目的的方法,但似乎都没有奏效(一些工作阻止滚动)。
我也想禁用 CRTL+S。
【问题讨论】:
标签: javascript html css pdf embed
虽然,正如你所说的那样,这种方法很愚蠢,而且有很多方法可以绕过它,但对于大多数用户来说,你可以捕获contextmenu 事件并使用event.preventDefault() 来阻止上下文菜单出现(或提供一个自定义一)。所有主要的桌面浏览器都支持它,所以应该在不妨碍滚动或其他任何事情的情况下做你需要它做的事情。
对于Ctrl+S,我以前没有尝试过,但过滤keydown 事件可能是一种选择(尽管我对此表示怀疑)。除此之外,我不知道有任何其他方法可以做到这一点。
【讨论】:
<body> <embed src="https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf#toolbar=0" id="noContextMenu" width="400px" height="600px" /> </body> <script> const noContext = document.getElementById('noContextMenu'); noContext.addEventListener('contextmenu', e => { e.preventDefault(); }); </script>