在window.print()之后,Firefox不会重定向。

时间:2019-04-13 17:17:26

标签: javascript firefox redirect printing window.location

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

1 个答案:

答案 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>