window.print不适用于document.write呈现的页面

时间:2011-02-04 03:40:47

标签: javascript html printing

情境: 我正在创建一个新窗口(新选项卡)并通过javascript写入html标记。 新文件 2.将html标记写入文档的内容。 3.显示新文件。

我需要做什么: 我基本上需要通过单击按钮,链接或onload来打印一个简单的HTML页面(javascript打印对话框)。 问题是,我无法通过任何一种方式工作......只有一个例外。

(一个例外)使用onload =“window.print()”只有在出现新窗口并且我点击刷新时才会起作用(初始创建窗口时不会显示打印对话框)。

奇怪的是,即使我在事件点击(href,button ...等)上调用“window.print()”也没有任何反应。但我知道这不是浏览器,因为这个简单的事情的样本/演示工作正常。

所以它似乎与我的页面呈现方式有关(在本文的“场景”部分中描述)。

CODE: 当我点击“打印”按钮时,我会调用它(现在,确切地说是谁/什么调用它并不重要。但只知道它被调用了):

function Print(htmlContent) {
  var printWindow = window.open();
  var printDoc = printWindow.document;
  printDoc.write(htmlContent);

我忘记提到这一点:传递给Print scrip函数的HTML(htmlContent)确实是Html,但它已被XSL转换。这是XSL:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
    <head>
        <style type="text/css" media="print">
            .noprint{
                    display:none;
                }
        </style>
        <script type='text/javascript'>
            function startPrint(){
                window.print();
            }
        </script>
    </head>

      <body>        
        <div >
            <a id="printButton" href="startPrint();">Print this page</a>
        </div>
        Hello world.
</body>
    </html>
  </xsl:template>
</xsl:stylesheet>

我可以确认javascript有效,因为如果我用href =“alert('hi')”替换href =“startPrint()”,我确实会得到一个带有该警报的弹出窗口。

1 个答案:

答案 0 :(得分:0)

我仍然不清楚您需要对此代码执行什么操作。但是,从那我可以理解&amp;根据可用的参考here,我已实施this

这正如你提到的关于点击链接的javascript打印对话框一样正常。但是,我认为这似乎不是你的解决方案。请纠正我的错误。

谢谢。

供参考:w3schools