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

问题描述 投票:0回答:1

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

javascript firefox redirect printing window.location
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.