除IE11

时间:2019-02-06 21:31:33

标签: javascript

我编写了将pdf blob显示到iframe屏幕上的代码,但我也希望它能打印。除了IE11,我在所有浏览器中都可以使用此工具。有人知道那里的解决方案吗?我读了一些关于execCommand的地方,但这似乎也不起作用。

const printElem = (invoice) => {
  const origiframe = document.querySelector('iframe');
  if (origiframe) {
    origiframe.remove();
  }
  const iframe = document.createElement('iframe');
  iframe.src = invoice;
  iframe.name = 'pdf-frame';
  iframe.id = 'pdf-frame';
  iframe.style.display = 'none';
  iframe.style.visibility = 'hidden';
  document.body.appendChild(iframe);
  window.frames['pdf-frame'].print();
}

更新:我应该能够使用类似以下的内容来使打印在所有浏览器上都能使用,但是语法不清楚:

window.frames['pdf-frame'].document.execCommand('print',false,null);

UPDATE2 :我也尝试使用以下内容,但仍然没有骰子。有人对为什么catch部分在IE11中不起作用有任何想法?

try {
  window.frames['pdf-frame'].print();
} catch(e) {
  window.frames['pdf-frame'].document.execCommand('print',false,null);
}

1 个答案:

答案 0 :(得分:1)

如果您尝试此操作?

var target= document.getElementById("myFrame");
try {
    target.contentWindow.document.execCommand('print', false, null);
} catch(e) {
    target.contentWindow.print();
}