1

我正在尝试通过传递 window.open url 并使用 window.focus、window.print 来打印我的域上的另一个页面。但是,打印预览只显示一个空白页面。我猜我必须等到页面加载完毕,但我不确定该怎么做。这是代码:

var newWin=window.open('http://mydomain.com');
newWin.focus(); 
newWin.print(); 
newWin.close();

我试过像

newWin.onload() {
    newWin.print();
});

无济于事。

编辑1:

var newWin=window.open('http://localhost:76');
newWin.focus(); 
newWin.onload = newWin.print();
newWin.close();

同样的问题仍然存在

编辑2:

var newWin=window.open('http://localhost:76');
newWin.focus(); 
newWin.body.onload = newWin.print();

在此处添加 newWin.close() 会导致打印功能出错并仅打印
页面的标题。否则,使用此页面可以正确打印

编辑3:

function printWin(newWin) {
    newWin.print();
    newWin.close();
}

var newWin = window.open('http://localhost:76');
newWin.focus();
newWin.body.onload = printWin(newWin);

这会导致打印像以前一样过早发生,预览空白页面。wtf :(

4

1 回答 1

2

打开弹出窗口。然后检查弹出窗口是否准备好。准备好后,注入一个 javascript。

<script type="text/javascript">

    var popup = window.open("b.htm");
    var body;
    function check() {
        body = popup.document.getElementsByTagName("body");
        if (body[0] == null) {
            setTimeout(check, 50);
        } else {
            var n = popup.document.createElement("script");
            n.src = "printandclose.js";
            body.appendChild(n);
        }
    }
    check();

</script>

printandclose.js

window.print();
window.open("", "_self");
window.close();

让我知道它是否有效。如果您不添加window.open("", "_self");警报,则会弹出一个警报,告诉用户该窗口即将关闭。

于 2012-05-15T15:58:15.063 回答