dojo/dijit和Printing

Kit*_*son 5 javascript printing dojo

我希望能够为我的用户提供一个按钮来打印我的dojo/dijit应用程序的特定部分.在打印方面似乎普遍缺乏文档和示例.

例如,我有一个特定的dijit.layout.ContentPane包含我想要打印的内容,但我不想打印文档的其余部分.我在网上看到了一些纯粹的JavaScript示例,其中将node.innerHTML其读入"隐藏"的iframe,然后从那里打印出来.我怀疑它会起作用,但我想知道是否有更多的以dojo为中心的打印方法.

有什么想法吗?

Kit*_*son 1

我决定沿着<iframe>从那里读取和打印的路径,但由于我使用的是渲染的 dojox.gfx 表面,因此从目标 ContentPane 直接读取到不可见的 iframe 在某些浏览器中无法正常工作。因此,我所做的是将 iframe 的“src”设置为重新渲染图表的页面,然后在完成时将其自身打印出来。在主文档中,它看起来像这样:

<iframe id="printIFrame4" src="#" style="width: 0px; height:0px; 
  border: none; background: transparent"></iframe>
<button dojoType="dijit.form.Button" style="margin-top: -3px;" id="buttonPrintMap4">
  Print...
  <script type="dojo/method" event="onClick" args="event">
    dojo.byId("printIFrame4").src = "logmap/docMap.php?id=4";
  </script>
</button>
Run Code Online (Sandbox Code Playgroud)

然后页面执行必要的 dojo 操作来重新绘制图表,然后一旦加载它就会执行以下操作:

this.focus();
this.print();
Run Code Online (Sandbox Code Playgroud)

然后进行打印。