我有一个带有按钮的网页,我想打印页面,然后重定向到另一个页面。但是,使用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上做同样的事情......
首先,您的代码应该可以工作,但是(方式)更好的版本是:
<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>