Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当用户告诉浏览器打印页面时,是否可以显示警报?_Javascript_Internet Explorer_Firefox - Fatal编程技术网

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

Javascript 当用户告诉浏览器打印页面时,是否可以显示警报?,javascript,internet-explorer,firefox,Javascript,Internet Explorer,Firefox,客户需要在用户尝试打印(通过Ctrl+p或文件/打印)浏览器中的任何内容时,向用户显示一条警报,例如“记住不要打印超过x页”之类的内容。是否可以使用Javascript、CSS或任何其他方法?不幸的是,不可以。您可以从Javascript调用打印对话框,但无法拦截它。 唯一的方法是只在internet explorer上使用ActiveX来执行类似的操作,这非常难看。但是您可以使用css停止打印 <style type="text/css" media="print"> body{v

客户需要在用户尝试打印(通过Ctrl+p或文件/打印)浏览器中的任何内容时,向用户显示一条警报,例如“记住不要打印超过x页”之类的内容。是否可以使用Javascript、CSS或任何其他方法?

不幸的是,不可以。您可以从Javascript调用打印对话框,但无法拦截它。
唯一的方法是只在internet explorer上使用ActiveX来执行类似的操作,这非常难看。

但是您可以使用css停止打印

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

正文{可见性:隐藏;}或使用显示:无;

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

然后,您将包含一个带有javascript的“打印页面”链接,其中包括您的警报


不是很优雅-我知道。

有一个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;


出于某种原因,beforeprint在Chrome中触发了两次。

Control-p仍然是可能的。没错,但应该可以在keydown处理程序
$(文档)中截获。keydown(…)
明显禁用打印页面,不是吗?