如何在打印页面后重新加载页面?

时间:2017-04-25 09:42:30

标签: javascript jquery printing

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>

当我点击cancel按钮时,

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

Chrome 什么都没发生。

我已查看onafterprint事件。这是每次调用但页面没有刷新。请帮帮我。

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

2 个答案:

答案 0 :(得分:0)

以下 firefox 的工作是,对于 chrome no.Your页面正在重新加载,只是它没有在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/

答案 1 :(得分:0)

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