前端 window.print() 打印图片

在使用 document.write 时,确保内容加载完成后再执行其他操作(如 print),可以通过以下方法实现:

1. 使用 window.onload 事件

window.onload 事件会在页面所有资源(包括图片、脚本等)加载完成后触发。

javascript

复制

window.onload = function() {
    document.write("页面已加载完成");
    window.print(); // 确保内容加载完成后再打印
};

2. 使用 DOMContentLoaded 事件

DOMContentLoaded 事件在 HTML 文档完全加载和解析后触发,无需等待图片等资源。

javascript

复制

document.addEventListener("DOMContentLoaded", function() {
    document.write("DOM 已加载完成");
    window.print(); // 确保 DOM 加载完成后再打印
});

3. 使用 setTimeout 延迟

如果内容动态生成,可以使用 setTimeout 延迟打印。

javascript

复制

document.write("动态内容");
setTimeout(function() {
    window.print(); // 延迟确保内容写入完成
}, 1000); // 延迟 1 秒

4. 使用 MutationObserver 监听 DOM 变化

如果内容异步加载,可以使用 MutationObserver 监听 DOM 变化。

javascript

复制

const targetNode = document.body;
const config = { childList: true, subtree: true };

const callback = function(mutationsList, observer) {
    for (let mutation of mutationsList) {
        if (mutation.type === 'childList') {
            window.print(); // 确保内容加载完成后再打印
            observer.disconnect(); // 停止监听
        }
    }
};

const observer = new MutationObserver(callback);
observer.observe(targetNode, config);

document.write("异步内容");

总结

  • window.onload:等待所有资源加载完成。

  • DOMContentLoaded:等待 DOM 加载完成。

  • setTimeout:延迟执行打印。

  • MutationObserver:监听 DOM 变化,确保内容加载完成。

你可能感兴趣的:(前端)