当前位置:  开发笔记 > 编程语言 > 正文

如何从Javascript调用打印预览?

如何解决《如何从Javascript调用打印预览?》经验,为你挑选了2个好方法。

我有一个页面应该启动打印预览页面onload.

我找到了这个:

var OLECMDID = 7;
/* OLECMDID values:
* 6 - print
* 7 - print preview
* 1 - open window
* 4 - Save As
*/
var PROMPT = 1; // 2 DONTPROMPTUSER
var WebBrowser = '';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(OLECMDID, PROMPT);
WebBrowser1.outerHTML = "";

但...

    它在FireFox中不起作用.

    这有点难看.

有没有更好的方式为IE或适用于FireFox的方式?



1> svandragt..:

你不能,Print Preview是浏览器的一项功能,因此应该保护它不被JavaScript调用,因为它会带来安全风险.

这就是为什么您的示例使用Active X,它绕过了JavaScript安全问题.

因此,请使用您应该拥有的打印样式表并将其显示为media = screen,而不是media = print.

阅读Alist Apart:去打印以获得关于打印样式表主题的好文章.


出于好奇,你能解释一下是什么让打印预览成为安全风险而打印不是吗?在我看来,有许多现有浏览器特定的JavaScript的例子.添加window.printPreview()的特定浏览器的安全风险是什么?
如果您有可以访问浏览器组件的Firefox扩展或附加组件,并且需要启动打印预览,则可以使用:`PrintUtils.printPreview(PrintPreviewListener);`

2> 小智..:

我认为在跨浏览器JavaScript中最好的是window.print(),(在Firefox 3中,对我来说)会打开"打印"对话框,而不是打印预览对话框.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有