情境: 我正在创建一个新窗口(新选项卡)并通过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()”,我确实会得到一个带有该警报的弹出窗口。