当用户告诉浏览器打印页面时,是否可以显示警告?

时间:2011-06-09 15:21:01

标签: javascript internet-explorer firefox

客户需要在用户尝试从浏览器打印(通过Ctrl + P或文件/打印)任何内容时向用户显示警报,例如“记住不要打印超过x页”或类似的东西那。是否有可能,使用Javascript,CSS或任何其他方法?

4 个答案:

答案 0 :(得分:4)

不幸的是没有。您可以从JavaScript调用打印对话框,但不能拦截它。 唯一的办法就是做这样的事情只会在互联网资源管理器上使用ActiveX,这简直太丑了。

答案 1 :(得分:1)

但是你可以使用css来停止打印

<style type="text/css" media="print">
body{visibility:hidden;} or use display:none;
</style>

答案 2 :(得分:1)

这是不可能的。一种解决方法可能是在没有菜单的单独窗口中打开相关页面。因此,用户无法直接单击文件 - &gt;打印。如果你想确定你也可以捕获鼠标右键并阻止上下文菜单打开。

然后,您将在javascript中添加“打印页面”链接,包括您的提醒。

不太优雅 - 我知道。

答案 3 :(得分:1)

window.onbeforeprint / window.matchMedia

有一个解决方案
function beforePrint() {
    alert('Remember print only X copies');
}
function afterPrint() {
    //do something
}

if (window.matchMedia) {
    var mediaQueryList = window.matchMedia('print');
    mediaQueryList.addListener(function(mql) {
        if (mql.matches) {
            beforePrint();
        } else {
            afterPrint();
        }
    });
}

window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;

http://jsfiddle.net/mowglisanu/FY4q2/

Detecting Print Requests with JavaScript

出于某种原因,preprint在Chrome中引发了两次。