You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript/jQuery实现移动端禁用截图?

禁止截屏的实现方案

一、移动端原生应用(如Facebook)的实现方式

Android 平台

核心是利用系统提供的FLAG_SECURE标记,给目标Activity添加该标记后,系统会直接禁止对当前页面的截屏、录屏操作,触发截屏时会弹出系统级提示(即你看到的“此应用或您的组织不允许截取屏幕”)。

示例代码(Java):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 添加FLAG_SECURE标记
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
    setContentView(R.layout.activity_main);
}

这个标记是系统级限制,能拦截所有系统触发的截屏操作(包括三指下滑、电源+音量键组合)。

iOS 平台

iOS没有直接禁止系统截屏的API,通常的实现思路是监听截屏事件,然后通过遮挡层、内容模糊等方式隐藏敏感内容,同时弹出自定义提示:

  1. 监听UIScreenCapturedDidChangeNotification通知,当检测到截屏行为时触发处理逻辑;
  2. 或者通过UIScreen.isCaptured属性实时判断当前是否处于截屏/录屏状态。

示例思路(Swift):

NotificationCenter.default.addObserver(self, selector: #selector(handleScreenCapture), name: UIScreen.capturedDidChangeNotification, object: nil)

@objc func handleScreenCapture() {
    if UIScreen.main.isCaptured {
        // 显示遮挡层或弹出提示
        showScreenshotBlocker()
    }
}

二、Web端(JavaScript/jQuery)的实现方式

Web端无法阻止系统级的截屏操作(如系统快捷键、手势),只能拦截键盘触发的PrintScreen按键,同时给出提示:

原生JavaScript实现

document.addEventListener('keydown', function(e) {
    // 拦截PrintScreen键(keyCode 44)
    if (e.keyCode === 44 || e.key === 'PrintScreen') {
        e.preventDefault();
        alert('此应用不允许截取屏幕');
    }
});

jQuery实现

$(document).on('keydown', function(e) {
    if (e.which === 44 || e.key === 'PrintScreen') {
        e.preventDefault();
        alert('此应用不允许截取屏幕');
    }
});

注意:Web端的方案仅能拦截键盘触发的截屏,对系统手势、组合键截屏无效,因为这类操作属于系统层面,前端JS没有权限干预。

内容的提问来源于stack exchange,提问作者Asma Binta Younus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:15:51