【问题标题】:How to page reload after print my page?打印我的页面后如何重新加载页面?
【发布时间】:2017-04-25 09:42:29
【问题描述】:

function printdiv(printpage) {
    var headstr = "<html><head><title></title></head><body>";
    var footstr = "</body>";
    var elements = document.getElementsByClassName('hide-print-area');
    for (var i = 0; i < elements.length; i++) {
        elements[i].style.display = 'none';
    }
    var newstr = document.all.item(printpage).innerHTML;
    var oldstr = document.body.innerHTML;
    document.body.innerHTML = headstr + newstr + footstr;
    window.print();
    document.body.innerHTML = oldstr;
    for (var i = 0; i < elements.length; i++) {
        elements[i].style.display = 'block';
    }
    return false;
}
window.onafterprint = function() {
    //alert("Hello");
    window.location.reload(true);
};
<html>
<head>
<title>Test Printing Page </title>
</head>
<body>
   <div id="printArea">
    <h2>Print Title</h2>
    <div>Desciption Here</div>
    <input class="hide-print-area" type="button" value="Print" onclick="printdiv('printArea')" />
   
   </div>
</body>
</html>

Mozilla 浏览器页面在我点击 cancel 按钮时刷新但是当我点击 ok 按钮时页面没有刷新。

Chrome什么也没发生。

我已经检查了onafterprint 事件。每次都在调用,但页面未刷新。请帮帮我。

我想在打印我的页面后重新加载页面。

【问题讨论】:

  • 试试 window.location=''
  • window.location='';替换window.location.reload(true);
  • @BadshahSahib window.location=''; 也不起作用
  • 是否有必要在打印完成后仅准确地重新加载您的页面?我的意思是,一旦发送打印命令,您仍然可以重新加载页面。在几乎情况下,打印应该会成功。
  • @KingKing 是的,这是重新加载页面所必需的。

标签: javascript jquery printing


【解决方案1】:

以下适用于 firefox 是的,适用于 chrome 否。您的页面正在重新加载,只是它在 chrome 中不起作用。

 window.onafterprint = function() {
        window.location.reload(true);
    };

对于 chrome onafterprint 不起作用,因为没有实现,因此您需要 addListeners 到媒体查询,其中一种方法如下所述以实现一样。

window.matchMedia('print').addListener(function (media) {

      if(media.matches){

      }
      else{
           window.location.reload(true);
            //location.reload();
      }
   });
}

虽然我不明白写入 html 然后重新加载页面的意义何在。

工作示例请参考以下链接:

https://jsfiddle.net/f8fp9k0x/

【讨论】:

    【解决方案2】:

    在 document.body.innerHTML = oldstr; 之后 添加window.location.reload(true);

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 2017-10-03
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多