请教panel中的打印问题(extjs)

tabpanel的tab1加了一个panel和一个button按钮,现在在panel中有一个jsp的文件,想通过button按钮实现打印的功能,网上找的window.pr... tabpanel的tab1加了一个panel和一个button按钮,现在在panel中有一个jsp的文件,想通过button按钮实现打印的功能,网上找的window.print()的都是全部都打印了出来,现在只想打印想要打印的jsp页面出来。如果在点击打印后出现打印预览那是更好的,如果打印预览实现不了,只希望大神能帮忙实现打印的功能做的界面如下 展开
 我来答
Mokoko
推荐于2016-02-23 · 超过17用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:54.2万
展开全部

假设你的jsp显示在id为printArea下的元素下,在页面里定义一个iframe,假设这iframe的id是printIframe。

在你的button的click事件里用下面的代码做:

var printArea = document.getElementById("printArea").innerHTML;
var iframe = document.getElementById("printIframe");
iframe.contentWindow.document.body.innerHTML=printArea;
iframe.contentWindow.focus();//IE will print parent window without this statement.
iframe.contentWindow.print();
更多追问追答
追问

  你好,我panel中的代码如下:

  然后按你写的id改了之后拿进去,没效果出来呀

追答

不是这样的,你的panel直接写成

{
    xtype : 'panel',
    id : 'printArea'
}
这个panel的内容就是你的url返回的html。

然后在jsp里面随便一个地方写一个<iframe id="printIframe" style="width:0px;height:0px;position:absolute;left:-500px;top:-500px;"></iframe>。

这个iframe基本以后就通用了,只要打印的东西都可以先丢到这个iframe里面,然后打印这个iframe的内容。

原理就是在页面里面放一个隐藏的iframe(通过width:0px;height:0px;position:absolute;left:-500px;top:-500px;控制隐藏),我们想打印哪些div的内容就预先把这部分内容全部复制到iframe里面,然后就打印iframe就可以了。

var printArea = document.getElementById("printArea").innerHTML;
var iframe = document.getElementById("printIframe");

这段代码里面的document.getElementById("printArea").innerHTML你不必一定要这么获取,对于Ext的话你就直接通过Ext.getCmp('printArea').getEl().getHTML()也可以。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式