关于调用 IE浏览器 WebBrowser activeX 控件自带的打印预览功能

LanFavourite 2015-01-31 11:47:17
系统界面是用 ExtJs, 系统右边布局 TabPanel 是嵌套了 iframe, iframe里面指向了jsp的路径。

如今的需求是:打印预览 iframe 里头的内容,SO,有了以下的代码:


var WebBrowser = '<OBJECT ID="WebBrowser" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
if(条件一){
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body标签内加入html(WebBrowser activeX控件)
document.all.ifrmname.ExecWB(7, 1); //打印预览,ifrmname为iframe的name
WebBrowser.outerHTML = ""; //从代码中清除插入的html代码
}else{
document.body.insertAdjacentHTML('beforeEnd',WebBrowser);//在body标签内加入html(WebBrowser activeX控件)
document.all.ifrmname.ExecWB(7, 1); //打印预览,ifrmname为iframe的name
}


上面代码已经实现了打印预览 iframe 里头的内容,但是如今出现了一个小插曲:

当右边TabPanel只有一个选项卡时,打印预览多次是一点问题都没有的,但是当右边布局TabPanel打开了多个选项卡时,即:当执行过 条件一里头代码时,第二次进入另外条件打印预览功能时候,IE浏览器后台就会报错:对象不支持属性或方法,定位到:document.all.ifrmname.ExecWB(7, 1); //打印预览,ifrmname为iframe的name 这行代码,条件一中不也是这样打印预览吗?为什么同是同样的代码会报 对象不支持属性或方法
...全文
251 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LanFavourite 2015-02-03
  • 打赏
  • 举报
回复
木有人知道吗? 别沉啊。。。
  • 打赏
  • 举报
回复
引用 楼主 LanFavourite 的回复:
系统界面是用 ExtJs, 系统右边布局 TabPanel 是嵌套了 iframe, iframe里面指向了jsp的路径。 如今的需求是:打印预览 iframe 里头的内容,SO,有了以下的代码:

var WebBrowser = '<OBJECT ID="WebBrowser" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
if(条件一){
	document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body标签内加入html(WebBrowser activeX控件)        
	document.all.ifrmname.ExecWB(7, 1); //打印预览,ifrmname为iframe的name 
	WebBrowser.outerHTML = ""; //从代码中清除插入的html代码
}else{
	document.body.insertAdjacentHTML('beforeEnd',WebBrowser);//在body标签内加入html(WebBrowser activeX控件) 
	document.all.ifrmname.ExecWB(7, 1); //打印预览,ifrmname为iframe的name
}
上面代码已经实现了打印预览 iframe 里头的内容,但是如今出现了一个小插曲: 当右边TabPanel只有一个选项卡时,打印预览多次是一点问题都没有的,但是当右边布局TabPanel打开了多个选项卡时,即:当执行过 条件一里头代码时,第二次进入另外条件打印预览功能时候,IE浏览器后台就会报错:对象不支持属性或方法,定位到:document.all.ifrmname.ExecWB(7, 1); //打印预览,ifrmname为iframe的name 这行代码,条件一中不也是这样打印预览吗?为什么同是同样的代码会报 对象不支持属性或方法
很简单,你把你的写法改一下就ok了,改成:document.all.item("ifrmname" + 获取构建iframe的name).; 因为你是用TabPanel选项卡,而iframe选项卡中又嵌套了iframe,所以你在构建iframe的时候,最好动态构建iframe的name, 然后通过 document.all.item("ifrmname" + 获取构建iframe的name).ExecWB(7, 1); 即可。
LanFavourite 2015-02-02
  • 打赏
  • 举报
回复
为什么 js 版块活跃度那么低? 回复人数寥寥无几呢? ,这个问题困扰很久了啊,急需解决,求js大神赐教...
LanFavourite 2015-01-31
  • 打赏
  • 举报
回复
没人知道吗?

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧