单击“ Chrome打印”对话框时关闭窗口

时间:2018-12-29 05:44:32

标签: javascript

当用户单击“打印对话框”中的print按钮时,我想关闭Chrome中的当前选项卡。我尝试使用window.print()setTimeout(),但是即使通过CANCEL按钮取消了打印,这也会关闭对话框。 有什么解决办法吗?

这是我到目前为止所做的:

function printThis(){
    window.print();
    setTimeout(function(){
        window.close();
    },5000);
}

4 个答案:

答案 0 :(得分:1)

请使用此代码。

window.addEventListener("beforeprint", function(event) { ... });
//or
window.onbeforeprint = function(event) { ... };
按下 Ctrl + p 或打开打印对话框时会调用

window.onbeforeprint

例如

window.addEventListener("beforeprint", 
                        function(event) {
                            window.close();
                        });

或者如果您想在按下打印按钮后关闭窗口,请像这样使用window.onafterprint

window.onafterprint = function(){
   window.close()
}

答案 1 :(得分:0)

您可以在onload上调用此方法,一旦取消了该打印对话框,便会自动调用警报提示,并询问用户是否进行了打印(如果已完成打印),则该用户将自动重定向到页面。

如果要关闭窗口,则应通过window.open方法打开特定的窗口,不能仅通过URL或重定向来打开窗口。

示例:

window.open("https://yourside.com", "_blank", "toolbar=yes,scrollbars=yes,resizable=yes,top=500,left=500,width=400,height=400");

然后,您可以在window.open打开的窗口中调用window.close

window.onload = function () {
    window.print();
    setTimeout(function(){ if(confirm("Have you printed ?")) { window.location.href="/your_page"; } }, 1);
}

答案 2 :(得分:0)

您可以使用<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyActivity"> <RelativeLayout android:id="@+id/layout1" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Top App Bar --> <RelativeLayout android:id="@+id/layout2" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:elevation="0dp"> <!-- Top Action Bar --> <include layout="@layout/action_bar" /> <!-- Top Tabs --> <include layout="@layout/top_tabs" /> </android.support.design.widget.AppBarLayout> </RelativeLayout> <!-- Middle Section (Body) --> <RelativeLayout android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/layout2"> <include layout="@layout/viewpager" /> </RelativeLayout> <!-- Bottom Navigation View --> <include layout="@layout/bottom_navigation_view" /> </RelativeLayout> </android.support.design.widget.CoordinatorLayout> 事件:

onafterprint

答案 3 :(得分:0)

很简单! 在打印页面上(在我的例子中是“print-page.html”)使用这个脚本 -

<script>
window.onafterprint = function(){
window.close()
}
</script>

当用户点击打印/取消按钮时,它将关闭新标签!已在 chrome 上测试并运行良好。

确保你已经使用这个方法调用了打印接口-

<input type="button" value="button name" onclick="window.open('print-page.html','popUpWindow','height=687,width=1057,left=10,top=10,scrollbars=yes,menubar=no'); return false;" />

祝你好运!