Firefox 在 window.print() 之后没有重定向;

Firefox isn't redirecting after window.print();

我有一个带有按钮的网页,我想打印该页面然后重定向到另一个页面。但是,使用 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>

在您创建的函数中,打印完成后应该触发。 此事件 (window.onafterprint) 受所有浏览器支持,除了 safari(编辑:是的,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>