将div中的内容复制到一个新的iframe中
P粉042455250
P粉042455250 2023-08-17 17:03:59
[JavaScript讨论组]

最终我正在尝试一种打印特定 div 的技术,但我在这个问题的这一部分遇到了困难。

我有一些代码,应该从一个 div 复制到一个新的 iframe

var iframe = document.createElement('iframe');
var div = document.querySelector('div#sidebar');
var content = div.innerHTML;
iframe.srcdoc = `<!DOCTYPE html><html><head></head><body>${content}</body></html>`;

document.body.append(iframe);

iframe.contentWindow.print();

我在 SO 页面的开发者工具中尝试了这个(我可以尝试使用 div#sidebar)。

我注意到,我需要将 iframe 添加到文档中才能使其正常工作。否则,.contentWindow 属性为 null

代码似乎在某种程度上工作,但是 iframe 是空的,或者看起来是空的。最终打印出来的是空白。

在创建一个带有复制内容的新 iframe 中有什么技巧?

P粉042455250
P粉042455250

全部回复(1)
P粉306523969

好的,我有一个答案。我应该更加了解,因为我刚刚完成了一个类似主题的教学。

代码是有效的,但是它运行得太早了。我需要等待文档加载完成。

这是一个可行的版本:

var iframe = document.createElement('iframe');
var div = document.querySelector('div#sidebar');
var content = div.innerHTML;
iframe.srcdoc = `<!DOCTYPE html><html><head></head><body>${content}</body></html>`;

document.body.append(iframe);

//  等待iframe加载完成:
    iframe.onload = () => {
        iframe.contentWindow.print();
        iframe.contentWindow.addEventListener('afterprint', event => {
            iframe.remove();
        });
    };
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号