Javascript 当用户告诉浏览器打印页面时,是否可以显示警报?
客户需要在用户尝试打印(通过Ctrl+p或文件/打印)浏览器中的任何内容时,向用户显示一条警报,例如“记住不要打印超过x页”之类的内容。是否可以使用Javascript、CSS或任何其他方法?不幸的是,不可以。您可以从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
唯一的方法是只在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(…)
明显禁用打印页面,不是吗?