2017-03-24 18 views
1

我试图打印reactjs模态的内容。我在模式中嵌入了一个url,并希望打印这些内容的模式。下面是我的代码打印通过对象标记的url加载的页面

<Modal.Body> 
      <div> 
      <object id="printableArea" type="text/html" data="http://www.xyztest.net/obj.html" className="objectClass"> 
     </object> 
      </div> 
     </Modal.Body> 

我的打印按钮的功能是

handleToggle: function (divName) { 
    var printContents = document.getElementById(divName).innerHTML; 
    var originalContents = document.body.innerHTML; 
    document.body.innerHTML = printContents; 
    window.print(); 
    document.body.innerHTML = originalContents; 
} 

这不打印对象标记网址的内容..请让我知道如何可以做到这一点。我不想使用iframe

回答

0

弹出窗口可能是一个更容易和更可靠的解决方案。假设divName是指<object>标签,你可以这样做:

handleToggle: function (divName) { 
    var url = document.getElementById(divName).getAttribute('data'); 
    var win = window.open(); 
    win.document.write('<iframe style="width:100%;height:100%;padding:0px;margin:0px;" src="'+url+'" frameborder=0></iframe'); 
    setTimeout(function(){ 
     win.window.print() 
    }, 1000); 
} 

这将打开一个空白的弹出窗口,写一个iframe并设置SRC为自己的网址。然后它等待页面加载并触发打印

+0

这不工作..已经尝试过..它打开弹出式打印弹出与它没有任何关系.. –

+0

就像我说的,你需要确保'文档。 getElementById(divName)'正在返回''标签,我不知道'divName'是什么。如果它正在返回对象,它应该工作 –

+0

divName是对象标记上的id ..它在对象标记上返回css类,但不是嵌入式页面的实际html内容..my url就像这样:http: //example.com/admin.html –

相关问题