当前位置:首页 > JavaScript

原生js实现禁止截屏

2026-04-04 23:19:04JavaScript

在原生JavaScript中实现禁止截屏的功能存在一定局限性,因为浏览器出于安全考虑不允许直接控制操作系统级别的截屏行为。但可以通过以下方法增加截屏难度或干扰截屏结果:

禁用右键和开发者工具

通过阻止默认右键菜单和禁用开发者工具快捷键,减少用户手动截屏的途径:

原生js实现禁止截屏

document.addEventListener('contextmenu', function(e) {
  e.preventDefault();
});

document.addEventListener('keydown', function(e) {
  // 禁用F12、Ctrl+Shift+I等开发者工具快捷键
  if (e.key === 'F12' || 
      (e.ctrlKey && e.shiftKey && e.key === 'I') || 
      (e.ctrlKey && e.shiftKey && e.key === 'J') ||
      (e.ctrlKey && e.key === 'U')) {
    e.preventDefault();
  }
});

动态内容干扰

使用Canvas绘制敏感内容并定期更新,使静态截屏难以获取完整信息:

原生js实现禁止截屏

const canvas = document.createElement('canvas');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
document.body.appendChild(canvas);

const ctx = canvas.getContext('2d');
function drawProtectedContent() {
  ctx.fillStyle = 'white';
  ctx.fillRect(0, 0, canvas.width, canvas.height);
  ctx.fillStyle = 'black';
  ctx.font = '20px Arial';
  ctx.fillText('敏感内容:' + Math.random().toString(36).substring(2), 50, 50);

  setTimeout(drawProtectedContent, 1000); // 每秒刷新内容
}
drawProtectedContent();

全屏API限制

强制全屏模式并监听退出事件,降低截屏机会:

document.documentElement.requestFullscreen()
  .catch(err => console.error('全屏失败:', err));

document.addEventListener('fullscreenchange', () => {
  if (!document.fullscreenElement) {
    document.documentElement.requestFullscreen()
      .catch(err => console.error('重新进入全屏失败:', err));
  }
});

视觉干扰层

叠加半透明遮罩层干扰截屏效果:

.protection-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: repeating-linear-gradient(
    45deg,
    rgba(0,0,0,0.1),
    rgba(0,0,0,0.1) 10px,
    rgba(255,255,255,0.1) 10px,
    rgba(255,255,255,0.1) 20px
  );
  pointer-events: none;
  z-index: 9999;
}

注意事项

  1. 这些方法无法阻止物理设备截屏(如手机截屏快捷键)
  2. 专业截图工具可能绕过部分限制
  3. 过度限制可能影响正常用户体验
  4. 敏感内容建议使用DRM等专业解决方案

对于更高安全需求,建议考虑使用专业数字版权管理(DRM)技术如Widevine或FairPlay。

标签: js
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…