Copiez le contenu du div dans une nouvelle iframe
P粉042455250
2023-08-17 17:03:59
<p>En fin de compte, j'essaie une technique qui imprime un <code>div</code> spécifique mais je suis bloqué sur cette partie de la question. </p>
<p>J'ai du code qui doit être copié d'un <code>div</code> vers un nouveau <code>iframe</code> : </p>
<pre class="brush:js;toolbar:false;">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();
≪/pré>
<p>J'ai essayé cela dans les outils de développement sur la page SO (je pourrais essayer d'utiliser <code>div#sidebar</code>). </p>
<p>J'ai remarqué que je devais ajouter <code>iframe</code> au document pour que cela fonctionne. Sinon, la propriété <code>.contentWindow</code> est <code>null</code>. </p>
Le code <p> semble fonctionner dans une certaine mesure, mais le <code>iframe</code> est vide, ou semble être vide. L'impression finale est vierge. </p>
<p>Des conseils pour créer un nouveau <code>iframe</code> avec du contenu copié ? </p>
D'accord, j'ai une réponse. Je devrais en savoir mieux car je viens de terminer d'enseigner un sujet similaire.
Le code fonctionne, mais il s'exécute trop tôt. Je dois attendre que le chargement du document soit terminé.
Voici une version fonctionnelle :