当用户单击“打印对话框”中的print
按钮时,我想关闭Chrome中的当前选项卡。我尝试使用window.print()
和setTimeout()
,但是即使通过CANCEL
按钮取消了打印,这也会关闭对话框。
有什么解决办法吗?
这是我到目前为止所做的:
function printThis(){
window.print();
setTimeout(function(){
window.close();
},5000);
}
答案 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;" />
祝你好运!