iframe内からGoogleマップAPI v3マップを含むページを印刷しています。 iframeを印刷する前にページが完全に読み込まれていることを確認するために、次のコードを実装しました。 document.readystate === 'complete'
AFTER 500ミリ秒の遅延を有するとDocument.readystateはGoogle Mapsのキャンバス画像が読み込まれていることについて横たわっています
/**
* Auto print the page once the full document has finished loading
*/
function checkDocumentStateChange(documentElement) {
var document = documentElement;
console.log('Document ReadyState: ' + document.readyState);
document.onreadystatechange = function() {
console.log('Document ReadyState: ' + document.readyState);
if (document.readyState === 'complete') {
console.log("Document fully loaded!");
console.log("Printing report from within iframe");
setTimeout(function() {
window.print();
var requestOrigin = '@viewModel.RequestOrigin';
if(!!requestOrigin) {
// Tell the parent window that the print has occurred, so it can prepare to cleanup and remove this iframe
console.log("Send postMessage: secret");
parent.postMessage('secret', requestOrigin);
}
}, 500);
}
}
}ただし
はない画像とブランク/グレーのGoogleマップキャンバスとしばしばページプリントを、真です。
ページを再読み込みせずに再度window.print()を実行すると、すべてのマップイメージを含むiframeが期待どおりに印刷されます。したがって、文書準備完了状態は横たわっています。
私は(私はそれが時にすぐにコンテンツのロード長く待つ人々を罰するとして行うにはしたくないもの)も、長い遅延が増加するほか、これを解決するために何ができる
gmaps文書の準備ができた後、そのコンテンツのロードは、あなたがインラインフレームをコントロールしている場合、あなたはそれにCORSヘッダーを設定することができますreadyStateの – dandavis
には影響しません内容を追加します。 –
@dandavis thats私が思ったこと。 – TetraDev