通过window.open打开窗口并在加载时使用window.print打印它

时间:2010-09-17 15:07:43

标签: javascript jquery

我有一些像

这样的代码
var windowObject = window.open('','windowObject','arguments...');
windowObject.document.write("<html><body onload="alert(1);window.print();alert(2);"><div>some html</div></body></html>");

问题是除了window.print事件之外一切正常(就是说,在firefox上,它正在工作)。

有解决方法吗?

提前致谢, 拉夫

3 个答案:

答案 0 :(得分:1)

这是一个引号问题:onload=之后的双引号结束了写入文档的字符串。将onload引号更改为单引号。您还需要添加对文档的close()方法的调用:

var windowObject = window.open('','windowObject','arguments...');
windowObject.document.write("<html><body onload='alert(1);window.print();alert(2);'><div>some html</div></body></html>");
windowObject.document.close();

答案 1 :(得分:0)

在这一行中,您似乎正在尝试使用嵌套双引号:

windowObject.document.write("<html><body onload="alert(1);window.print();alert(2);"><div>some html</div></body></html>");

您更有可能想要这样做:

windowObject.document.write('<html><body onload="alert(1);window.print();alert(2);"><div>some html</div></body></html>');

答案 2 :(得分:0)

Chrome不允许我们在新打开的窗口/标签中进行打印。您可以通过添加这样的新html文件来实现您的要求 <body onload="window.print()"><div>Some html</div></body> 并用var windowObject = window.open('<path_to_your_new_html>','windowObject','arguments...');

替换您的代码