打印对话框关闭后自动转到上一个 window

go to previous window automatically after printing dialog closes

我有一个页面,其中 html 元素驻留,最后通过 javascript 调用打印函数。

<script type="text/javascript">
$(document).ready(function(){
    window.print();
    window.history.back();
})
</script>

现在我有这段代码可以在打印后或单击取消时重定向用户。它在本地工作,但在实时服务器中它会立即转到上一页。

也许你应该尝试在新的 window 中打印?

像这样:

    var myWindow=window.open('','','width=200,height=100');
    myWindow.document.write("<p>This is 'myWindow'</p>");
    myWindow.document.close();
    myWindow.focus();
    myWindow.print();
    myWindow.close();
    myWindow.history.back();

参考:JavaScript window.print() not working

您可以尝试使用 window.onafterprint 函数。

The afterprint event is raised after the user prints or aborts a print dialog.

不幸的是,only works in FF & IE

所以对于您的代码(并且仅适用于 FF 和 IE),我将尝试使用类似的东西:

<script type="text/javascript">
    $(document).ready(function(){
        window.print();
    })
    window.onafterprint = function() {
        history.go(-1);
    };
</script>

现在,对于 基于 Webkit 的浏览器 使用 matchMedia('print')...
像...

var mediaQueryList = window.matchMedia('print');
mediaQueryList.addListener(function(mql) {
    if (mql.matches) {
        console.log('onbeforeprint equivalent');
    } else {
        console.log('onafterprint equivalent');
    }
});

来源:
WindowEventHandlers.onafterprint
Detecting Print Requests with JavaScript
onbeforeprint and onafterprint is not working in Chrome and IE?

使用它返回上一页

$(document).ready(function() {
   window.print();
   history.go(-1); 
});

或:

$(document).ready(function() {
   window.print();
   history.back(); 
});