javascript - 是否可以停止从打印预览复制文本?
问题描述
我试图阻止用户在打印屏幕上选择和复制文本。
我使用这个 CSS 来禁用选择。
.disable-select {
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Chrome/Safari/Opera */
-khtml-user-select: none; /* Konqueror */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none; /* Non-prefixed version, currently supported by any browser but < IE9 */
}
<body class="disable-select">
...
</body
这个 jquery 可以防止我的网页中的复制、粘贴和右键单击选项
$(document).bind('contextmenu cut copy', function (e) {
e.preventDefault();
});
它可以在网页上运行,但是当我们按 ctrl+p 打印网页并进入打印选项屏幕时,上述代码均无法在此屏幕上运行
解决方案
不能影响打印预览。你可以看看这里
但是您可以阻止人们在打印页面中完全保留那段文本。像这样的东西:
.disable-select {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@media print{
.disable-select{
display:none
}
}
编辑
有一种方法可以做到这一点,更像是一个类似的技巧,而不是一个适当的 CSS 功能,但它只适用于现代浏览器。
显然,使用 CSS 过滤器会阻止用户在打印预览中选择文本
@media print{
.disable-text{
filter:grayscale(100%)
}
}
编辑 2
还在打印场景中将固定元素的位置设置为相对。
@media print{
.disable-text{
filter:grayscale(100%)
}
.fixed-elements{
position: relative;
}
}
编辑 3
或者另一种防止更改固定元素的解决方案是将disable-text类添加到 HTML 标记或要防止文本被复制的特定 div 中。
推荐阅读
- javafx - 有什么方法可以访问 JavaFX WebView 控件正在完成的网络流量?
- soap - 在 Azure 网关中创建 SOAP API 时遇到问题
- regex - 如何在 grep [] 语法中禁用 ^ 字符的特殊含义?
- java - 覆盖 ~/.gradle/init.gradle 存储库位置
- sql-server - SQL Server 2016 可以在一个事务中重新排列多个查询的顺序吗?
- linux - 如何使用 (int argc, char *argv[]) 在命令行中调用使用全局变量?
- javascript - 当我在移动设备上查看该段落时,该段落会出现故障
- python - 解包字典列表以获取所有密钥
- javascript - 打开带有锚链接的手风琴面板
- javascript - 与 Vite 捆绑的 React 应用程序中的 Socket.IO 不起作用(与 Webpack 捆绑时会起作用)