当前位置:首页 > JavaScript

js实现禁止打印

2026-01-30 21:25:59JavaScript

禁用浏览器打印功能的JavaScript方法

使用CSS的@media print规则结合JavaScript动态插入样式,隐藏所有内容或显示特定提示信息。

@media print {
    body { display: none !important; }
}

对应的JavaScript实现:

js实现禁止打印

function disablePrinting() {
    const style = document.createElement('style');
    style.innerHTML = '@media print { body { display: none !important; } }';
    document.head.appendChild(style);
}

拦截打印快捷键(Ctrl+P)

通过监听keydown事件阻止默认打印行为:

document.addEventListener('keydown', function(e) {
    if ((e.ctrlKey || e.metaKey) && e.key === 'p') {
        e.preventDefault();
        alert('打印功能已禁用');
    }
});

禁用右键菜单中的打印选项

阻止上下文菜单弹出并显示自定义提示:

js实现禁止打印

document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
    alert('右键打印功能不可用');
});

覆盖window.print方法

直接重写浏览器原生打印方法:

window.print = function() {
    console.log('打印功能已被管理员禁用');
    return false;
};

综合解决方案

结合多种方法实现更可靠的打印限制:

// 样式禁用
const noPrintStyle = document.createElement('style');
noPrintStyle.id = 'no-print-style';
noPrintStyle.textContent = `@media print {
    * { visibility: hidden !important; }
    body::before {
        content: "此文档禁止打印";
        visibility: visible;
        display: block;
        text-align: center;
        font-size: 24px;
        margin-top: 50px;
    }
}`;

// 方法拦截
window.print = function(){ alert('打印功能已禁用'); };
document.addEventListener('keydown', blockPrintShortcut);
document.addEventListener('contextmenu', blockContextMenu);

function blockPrintShortcut(e) {
    if ((e.ctrlKey || e.metaKey) && e.key === 'p') e.preventDefault();
}

function blockContextMenu(e) {
    if (e.target.tagName === 'HTML') e.preventDefault();
}

注意:这些方法只能阻止普通用户的打印行为,无法防止技术用户通过开发者工具或直接访问DOM的方式绕过限制。

标签: js
分享给朋友:

相关文章

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…