不指定src, 用js生成 iFrame/新窗口 里面的内容(可用于scriptX打印部分页面等)

原创 2007年09月14日 10:57:00

有如下需求: 要打印页面之中的某个表格,而且还要自动横打(所以用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() ;

相关文章推荐

iframe里面的页面调用父窗口,左右窗口js函数的方法

实现iframe内部页面直接调用该iframe所属父窗口自定义函数的方法。 比如有A窗口,A内有个IFRAME B,B里面的装载的是C页面,这时C要直接调用A里面的一个自定义函数AFUN();那么只要...

ScriptX控件如何在不跳转页面的情况下将要打印的内容打印出来

需求:如医生给患者开了很多的处方,在处方总列表界面有发送按钮,发送到收费系统的时候要求系统自动打印所有的处方 西药草药检查治疗等打印格式是不一样的,分别有对应的html打印文件,如果在每一个打印文件...
  • itlsq
  • itlsq
  • 2017年03月03日 11:37
  • 260

JavaScript获取iframe里面的src路径里面的内容

a.htm: a.htm var xmlHttp=null;      //判断浏览器         function createXMLHttpRequest() {         ...

ie的开发者工具在页面包含iframe,且src不同域时,由打开开发工具而触发的js错误提示

ie的开发工具访问iframe资源时触发的js错误
  • qidizi
  • qidizi
  • 2015年04月14日 19:21
  • 1598

EAS8.0,EAS8.2,WAF2,JS,打开新页面,打开新窗口,传递参数

业务场景:列表界面选择一行数据之后,判断数据状态,打开新页面。 打开新页面时,传递当前选择行记录的ID到新页面,在新页面进行下一步操作,页面链接中注意uipk参数。 option.url = wa...
  • guosyu
  • guosyu
  • 2017年06月06日 13:49
  • 471

JS 跳转页面和打开新窗口用法

1.在原来的窗体中直接跳转用 onClick="window.location.href='你所要跳转的页面';" 2、在新窗体中打开页面用: onclick="window.open('你所要跳转...

js弹出一个新窗口进行选择并且返回这个页面的值-showModalDialog

a.html function openWin(){ /* * * window . showModalDialo...

js页面跳转 和 js打开新窗口 方法

第一种: "javascript" type="text/javascript"> window.location.href="http://www.dollare.com.cn/login.ph...

js页面跳转 和 js打开新窗口 方法

2010-07-10 23:56:45|  分类: js实用脚本|字号 订阅 第一种:     "javascript" type="text/javascript...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不指定src, 用js生成 iFrame/新窗口 里面的内容(可用于scriptX打印部分页面等)
举报原因:
原因补充:

(最多只允许输入30个字)