用window.open另外打开一个窗口,把要打印的东西传过去。打开打印预览画面后,关闭那个画面。这样就能用预览画面打开了。。。结果关闭那个画面之后,打印预览也没了。。。
因为js可以调用的打印预览是基于WebBrowser,如果是模态窗口(showModalDialog)的话,子画面是无论如何也调不出来的,子画面直接调不出打印预览的,我看到网上无数人都困扰这个问题好久。WebBrowser这个东东,只有父画面有。
我的方法:
假设,a画面window showModalDialog打开b画面。a父画面,b子画面。a把自己的document以参数形式传递给b。把子画面的内容赋给父画面的document参数,并调用打印。但是,要使父画面内容不被打印出来,子画面内容不被显示到父画面里面上,可以通过css来控制。下面是具体实现。
window showModalDialog(url,document,width,heigth);
b画面获取这个参数var documentObj = window.dialogArguments
这样的话。。。documentObj .all.WebBrowser.ExecWB(7,1)就能打印东东了,这个段思路来自网友,他可能实现的是要打印父画面的内容。但是如果是要打印子画面的内容,就要稍微多做点事情。
在a画面上,把现在画面上的元素,最外层套一个div,或者其他什么。给个id叫,parentHtml。给个css:noPrint
在画面最下面画一个隐藏div,给个id叫childHtml。给个css:noDisplay。
定义好css
@media Print
{
.noPrint {
DISPLAY: none;
}
@media Screen
{
.noDisaplay {
DISPLAY: none;
}
然后,猥琐的办法。。。
在子画面上使用documentObj.getElementById("parentHtml")获得父画面的显示内容对象,给它加个class “noPrint”。
然后
documentObj.getElementById("childHtml").insertAdjacentHTML("beforeEnd",document.body.innerHtml)。
把子画面body里的内容复制到父画面的childHtml里去。
然后,documentObj .all.WebBrowser.execwb(7,1)。。。应该就能把子画面的内容显示到预览窗口里了。。。
最后再把parentHtml的noPrint去掉,以及childHtml里的内容删掉。
因为js可以调用的打印预览是基于WebBrowser,如果是模态窗口(showModalDialog)的话,子画面是无论如何也调不出来的,子画面直接调不出打印预览的,我看到网上无数人都困扰这个问题好久。WebBrowser这个东东,只有父画面有。
我的方法:
假设,a画面window showModalDialog打开b画面。a父画面,b子画面。a把自己的document以参数形式传递给b。把子画面的内容赋给父画面的document参数,并调用打印。但是,要使父画面内容不被打印出来,子画面内容不被显示到父画面里面上,可以通过css来控制。下面是具体实现。
window showModalDialog(url,document,width,heigth);
b画面获取这个参数var documentObj = window.dialogArguments
这样的话。。。documentObj .all.WebBrowser.ExecWB(7,1)就能打印东东了,这个段思路来自网友,他可能实现的是要打印父画面的内容。但是如果是要打印子画面的内容,就要稍微多做点事情。
在a画面上,把现在画面上的元素,最外层套一个div,或者其他什么。给个id叫,parentHtml。给个css:noPrint
在画面最下面画一个隐藏div,给个id叫childHtml。给个css:noDisplay。
定义好css
@media Print
{
.noPrint {
DISPLAY: none;
}
@media Screen
{
.noDisaplay {
DISPLAY: none;
}
然后,猥琐的办法。。。
在子画面上使用documentObj.getElementById("parentHtml")获得父画面的显示内容对象,给它加个class “noPrint”。
然后
documentObj.getElementById("childHtml").insertAdjacentHTML("beforeEnd",document.body.innerHtml)。
把子画面body里的内容复制到父画面的childHtml里去。
然后,documentObj .all.WebBrowser.execwb(7,1)。。。应该就能把子画面的内容显示到预览窗口里了。。。
最后再把parentHtml的noPrint去掉,以及childHtml里的内容删掉。