【问题标题】:How to reload scripts after canceling print function in javascript?在javascript中取消打印功能后如何重新加载脚本?
【发布时间】:2014-11-17 20:05:30
【问题描述】:

所以我得到了这个网站,我可以在其中使用 javascript 动态创建元素。一旦用户完成创建他想要的元素,他可以单击打印按钮。这将触发以下 javascript 函数:

function printContent() {

var restore = document.body.innerHTML;

var printcontent = document.getElementById('h').innerHTML;

document.body.innerHTML = printcontent;

window.print();

document.body.innerHTML = restore;

}

到目前为止,一切都很好。但是,当有人取消打印时,它会在视觉上返回到之前的状态,但不会加载脚本。我通过在我的外部 js 文档中发出警报来测试这一点。从打印命令返回时永远不会触发警报。我知道问题是变量恢复。它只是返回一个字符串。

我的问题:如何让我的 js 文件重新加载,同时在取消打印命令时保持文档正文处于恢复状态。

提前致谢。

【问题讨论】:

    标签: javascript printing


    【解决方案1】:

    在firefox和IE中实现了一个window.onafterprint事件,虽然developer.mozilla.org不是跨浏览器

    编辑: 我发现this 应该是跨浏览器兼容的:

    (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;
    }());
    

    【讨论】:

    • 谢谢!我会调查一下。不知道这个。
    • 好吧,经过一些测试,我决定放弃。它有效,但绝对不完美,不适用于我的脚本。我会坚持使用 jQuery 插件。不过,编写一个干净的 javascript 打印脚本会很好。我想我改天有时间再试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    相关资源
    最近更新 更多