2016-06-27 14 views
0

ウェブページをポップアップウィンドウに動的に読み込むウェブサイトの印刷機能を作成しようとしています。全体的な状況はちょっと変わったので、私が正確にやっていることを説明し、誰かがこのプロセスをより効率的なやり方でやり遂げる方法について提案があれば、私はすべて耳にします。JavaScriptのみを使用してiframeコンテンツを読み込むのを待つ方法

私は一緒に印刷する必要のある複数のWebページを持っているため、どのコンテンツを配信するかを制御できないため、iframe内のすべてを読み込むことをお勧めします(主に、 )単純にページにスローされると残りの部分を汚染するスタイル...)

iframeは柔軟ではないため、私のiframeがどれくらいの大きさである必要があるかを知る唯一の方法を見つけました。高さを記録し、最初に記録した高さのiframe内の各ドキュメントをレンダリングします。

これまでのところ、各iframeを1ページにレンダリングする準備が整いました。次のコードを使用して新しいiframe要素を作成しています。私は

iframe.contentDocument.open(); 

のiframeがインスタンス化されたヒット時に

var body = popWindow.document.createElement("body"); 
var iframe = popWindow.document.createElement("iframe"); 

iframe.contentDocument.open(); 
iframe.contentDocument.write(data); 
iframe.contentDocument.close(); 

問題が発生したが、contentDocumentはNULLであるように思われます。私はこのコンテンツが読み込まれるまで待つことを試みましたが、それは無限に座ってループします。

+1

ブラウザのXSSフィルタは、ステッピングだろうか? (コンソールを確認してください) – Oisin

+0

どうしたらいいか分かりません。ポップアップウィンドウは、スクリプトが実行されているページの子です。私が書いているすべてのデータは、jsからも得られます。 –

答えて

0

jQueryを使用すると、フレームが読み込まれるまで待つことができます。 EDIT

$("#your-frame").load(function() { 
    //frames["your-frame"] 
}); 

:使用するだけではJavaScript

var yourFrame = document.getElementById('your-frame'); 
yourFrame.addEventListener("load", function() { 
}); 
あなただけのiframeのウィンドウにイベントリスナーを添付することができ
+0

私は純粋なjs答えが必要です。残念なことに、jqueryはオプションではありません。 –

+0

これはうまくいくはずです。 'var yourFrame = document.getElementById( 'your-frame'); yourFrame.addEventListener( "load"、function(){ }); ' – gnllucena

0

iframe.window.addEventListener('load', function(){ ... 
+0

これはまだロードされていない可能性がありますので、ウィンドウが未定義ですか? iframe自体がロードされるのを待つだけで何もしません。 –

+0

1つの質問、iframeをdomに添付しましたか? – frankies

関連する問題