我正在使用Microsoft Edge 41.16299.402.0。
我想使用iframe嵌入PDF blob,并希望使用contentWindow.print()直接显示打印机对话框。
在其他浏览器中一切正常,但在Microsoft Edge中无法正常工作。
错误消息显示为“错误:意外调用方法或属性。”
有人知道如何解决这个问题吗?
下面是我的代码:
let loading = document.createElement("div");
loading.id = "printLoading";
loading.style.cssText = 'position: fixed;width: 100%;height: 100%;z-index: 999;background: rgba(6,6,6,0.3);top: 0;left: 0;';
document.body.appendChild(loading);
var iframe = document.getElementById("printIframe");
if (iframe != null) {
document.body.removeChild(iframe);
}
iframe = document.createElement("iframe");
iframe.id = 'printIframe';
iframe.style.display = 'none';
console.log("pdfBlob", pdfBlob)
document.body.appendChild(iframe);
iframe.src = URL.createObjectURL(pdfBlob);
let timeOut = 0;
var inter = window.setInterval(function () {
try {
if (iframe.contentWindow.document.readyState === "complete") {
document.getElementById("printIframe").contentWindow.print();
window.clearInterval(inter);
let loading = document.getElementById("printLoading");
if (loading != null) {
document.body.removeChild(loading);
}
}
} catch (error) {
timeOut += 100;
if(timeOut>5000){
window.clearInterval(inter);
let loading = document.getElementById("printLoading");
if (loading != null) {
document.body.removeChild(loading);
}
console.log(error);
}
}
}, 100);