我有一个.Net应用程序,动态创建一个小的
HTML页面,并使用
javascript document.open方法在新窗口中弹出它.具有该功能的一切都运行良好.
现在我想在打印页面的HTML页面上添加一个按钮.我尝试使用以下代码无济于事:
<a href='print.html' onClick='window.print();return false;'> <img src='images/printer.png' height='32px' width='32px'></a>
在弹出窗口中单击按钮时,没有任何反应.但是,当保存此页面的源代码并将其作为单独页面加载到浏览器中时,打印按钮可以正常工作.所以看起来问题是由代码在弹出窗口中引起的. [问题现在似乎是打开窗口后写入弹出窗口的代码.]有没有人知道解决这个问题或任何替代方法的方法?
编辑:
我试过的其他方法也有同样的结果:
<input type='button' onclick='window.print()' value='Print' />
和
<a href='javascript:window.print()'> <img src='images/printer.png' height='32px' width='32px'></a>
再次编辑:
上面的代码适用于Firefox,但不适用于IE7.有关IE的解决方案的任何想法?
再次编辑:
以下是使用下面的npup posted代码的测试用例.而不是弹出窗口的代码生活在一个单独的html文件中,我打开一个空白的URL,然后编写代码.此步骤似乎是导致问题的原因.
<html> <head> <title>main</title> </head> <body> <h1> Pop & print</h1> <button onclick="pop();"> Pop</button> <script type="text/javascript"> var POP; function pop() { var newWin = window.open('','thePopup','width=350,height=350'); newWin.document.write("<html><head><title>popup</title></head><body><h1>Pop</h1>" + "<p>Print me</p><a href='print.html' onclick='window.print();return false;'>" + "<img src='images/printer.png' height='32px' width='32px'></a></body></html>"); } </script> </body> </html>
解决方法
这是一个适合我的解决方案:
newWin.document.write( newhtml ); newWin.window.location.reload(); // this is the secret ingredient newWin.focus(); // not sure if this line is necessary newWin.print();
我不是百分之百确定为什么这有效但我认为它与以下之一有关:(1)IE安全问题,(2)范围问题(即在创建新文档后,IE很困惑哪个要打印的文件),或(3)计时问题 – 文件尚未准备好’接受’打印命令.在任何情况下,重新加载后,打印对话框都会出现问题.