我有一个带有按钮的网页,我要打印该页面然后重定向到另一个页面。但是,使用Firefox 66,如果我进行打印,它不会重定向。如果我取消打印,它可以重定向。
代码如下:
<SCRIPT LANGUAGE="JavaScript">
function myprint() {
window.print();
window.location='mypage.php';
}
</script>
<a><button onClick="myprint(); return false;">Print ticket</button></a>
如果我删除window.print();
行,它可以正常工作,但是在实际打印时,它却行不通。也可以在Chrome,Edge甚至IE11上使用,但不能在Firefox上使用。
我想念什么吗?
更新:不只是我的电脑。其他人的计算机在Firefox上也是如此...
答案 0 :(得分:0)
首先,您的代码应该可以运行,但是(一种更好的版本)是:
<SCRIPT LANGUAGE="JavaScript">
function myprint() {
window.onafterprint = function(event) {
window.location.href = 'index.php'
};
window.print();
}
</script>
<a><button onClick="myprint(); return false;">Print ticket</button></a>
在创建函数的地方,应在打印完成后触发 。 除Safari浏览器外,所有浏览器均支持此事件(window.onafterprint)(编辑:是,from MDN)
现在,由于某种原因,此代码不适用于Firefox 66.0.3 64位(以我为例),但可以完美地与IE11和Chrome 73一起使用。
好吧,如果您在被询问时取消打印,但实际上却有效。
一种解决方法是使用另一个事件onbeforeprint
,该事件在打印之前更改页面(其想法是在打印之前删除诸如广告之类的东西,然后使用onafterprint来恢复页面)。
当我尝试时,似乎打印的是第一页而不是第二页,因此该事件也被破坏了。
这种方法似乎可行。
<SCRIPT LANGUAGE="JavaScript">
function myprint() {
window.onbeforeprint = function(event) {
window.location.href = 'index.php'
};
window.print();
}
</script>
<a><button onClick="myprint(); return false;">Print ticket</button></a>