不指定src, 用js生成 iFrame/新窗口 里面的内容(可用于scriptX打印部分页面等)
来源:互联网 发布:弹道软件汉化版 编辑:程序博客网 时间:2024/04/30 09:51
有如下需求: 要打印页面之中的某个表格,而且还要自动横打(所以用scriptX等控件,因为window.print是竖打)?
解决办法:将这部分表格(或者div等)提取出来,专门放到一个新的窗口中去,然后根据这些内容自动生成一个包含打印控件iFrame, 再调用控件的打印方法打印该Ifrme;
____________________________________________________________
动态生成iframe的代码:
var ifr = document.createElement("iframe");
document.body.appendChild(ifr);
var ifrdoc = ifr.contentWindow.document;
ifrdoc.open();
ifrdoc.write("<BODY>");
ifrdoc.write("<object id='factory' style='display:none' classid='clsid:1663ed61-23eb-11d2-b92f-008048fdd814' ></object> ");
ifrdoc.write("</BODY>");
ifrdoc.close() ;
_____________________________________________________
实现打印的函数(可直接拷贝调用):
function PrintPart(controlId, isPortrait) //isPortrait =false 代表横打
{
//以下先生成一个Docment Fragment, 不是必须
var sdiv = document.getElementById(controlId);
var dc = document.createDocumentFragment();
var dcBd = dc.createElement("BODY")
for(var i=0;i<=sdiv.childNodes.length-1;i++)
{
dcBd.appendChild(sdiv.childNodes[i]);
}
dc.appendChild(dcBd);
//根据传入的内容生成一个iFrame并打印
var ifr = document.createElement("iframe");
document.body.appendChild(ifr);
ifr.style.pixelWidth = 1;
ifr.style.pixelHeight = 1;
var ifrdoc = ifr.contentWindow.document
ifrdoc.open();
ifrdoc.write("<BODY>");
ifrdoc.write("<object id='factory' style='display:none' classid='clsid:1663ed61-23eb-11d2-b92f-008048fdd814' ></object> ");
ifrdoc.write(dc.body.innerHTML); //如果上面没有生成DocumentFragment,则用sdiv 对象的outerHtml属性
ifrdoc.write("</BODY>");
ifrdoc.close() ;
//以下调用iframe中创建的打印控件实现打印
var fc = ifrdoc.getElementById("factory");
fc.printing.portrait = isPortrait; //是否横向打印
fc.printing.Print();
document.body.removeChild(ifr);
}
______________________________________________________
将以上代码稍加修改,就可以实现除打印之外的其它功能。主要的方法是document.write方法,动态生成新窗口,也类似:
var ow = window.open("", "newwin", "height=1, width=1");//top=10000,left=10000");
ow.document.write("<BODY>")
ow.document.write("<object id='factory' style='display:none' classid='clsid:1663ed61-23eb-11d2-b92f-008048fdd814' ></object> ")
ow.document.write(dc.body.innerHTML);
ow.document.write("</BODY>");
ow.document.close() ;
- 不指定src, 用js生成 iFrame/新窗口 里面的内容(可用于scriptX打印部分页面等)
- JS打印指定内容(新窗口)
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来
- JS刷新iframe和打印页面的iframe内容
- angularjs 在 iframe 里面无法正确显示 src 指定的内容
- JavaScript获取iframe里面的src路径里面的内容
- Js打印页面指定内容
- js打印页面指定内容
- IE6中子页面iframe中的js代码来刷新父页面的iframe的src不生效
- 避免iframe的src里面出现登陆页面
- 指定页面内容的打印
- JS简单方法打印页面指定内容
- js打印页面指定区域内容
- 用window.print()打印指定div里面的内容
- 用window.print()打印指定div里面的内容
- js访问iframe里面的内容
- SVG显示中文问题解决步骤
- 遇到心仪的女子
- 动态编译JAVA程序(com.sun.tool.javac)
- WinXP DDK下载
- 正则表达式
- 不指定src, 用js生成 iFrame/新窗口 里面的内容(可用于scriptX打印部分页面等)
- IIS不能安装的终极解决方案.
- 事务处理的三种方法
- 什么是钩子函数
- VC实现程序的自动运行
- S60 3rd MMP CAPABILITY
- 基数排序算法测试及性能分析
- 数据绑定以及Container.DataItem绑定技巧
- 一位程序员的演变历程(The Evolution of a Programmer)