Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅在用户打印时重定向到另一页_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 如何仅在用户打印时重定向到另一页

Javascript 如何仅在用户打印时重定向到另一页,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我一直在试图找到一种方法,如果用户实际打印,可以重定向到另一个页面。也就是说,我只想在他们从打印时打开的选项卡中单击打印按钮时重定向 我不想要这种方法 function myFunction() { window.print(); window.location='http://newurl.com/'; } 节录如下: 结合各种方法 如果将这两种方法结合起来,您可以在IE 5+、Firefox 6+、Chrome 9+和Safari 5.1+中检测打印请求(不幸的是,Ope

我一直在试图找到一种方法,如果用户实际打印,可以重定向到另一个页面。也就是说,我只想在他们从打印时打开的选项卡中单击打印按钮时重定向

我不想要这种方法

function myFunction() {
    window.print();
    window.location='http://newurl.com/';
}
节录如下:

结合各种方法 如果将这两种方法结合起来,您可以在IE 5+、Firefox 6+、Chrome 9+和Safari 5.1+中检测打印请求(不幸的是,Opera不支持这两种方法)

请注意,您的事件处理程序可能必须处理这样一个事实:在Chrome中,每个打印请求都会调用它们两次


摘录结束。

您完全无法控制“打印时打开的选项卡”,这是真的,但前后都有事件发生。这些处理程序将在预览窗口关闭时(以及其他时间)运行,而不管文档是否实际打印。基于Chrome的(mediaquery)将仅在实际打印时运行,除非Chrome切换到打印媒体进行预览。。。未测试。在Chrome 68.0.3440.75中,
窗口.匹配媒体(“打印”)
打印前和打印后都会在预览窗口出现之前触发,如果选择了其他打印机,则会再次触发。预览窗口关闭后,
窗口.onafterprint
处理程序将启动,即使单击了“取消”。因此,请询问用户是否在预览窗口关闭后进行了打印!
(function() {
var beforePrint = function() {
    console.log('Functionality to run before printing.');
};
var afterPrint = function() {
    console.log('Functionality to run after printing');
};

if (window.matchMedia) {
    var mediaQueryList = window.matchMedia('print');
    mediaQueryList.addListener(function(mql) {
        if (mql.matches) {
            beforePrint();
        } else {
            afterPrint();
        }
    });
}

window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;
}());