仕事で抱えている問題で、ソースコードはお見せることができず、解決までいかなくても何かヒント得られたらと思います。もちろん、解決できたら嬉しいです。
概要:
今はshowModelessDialogで画面を開くことの代替案として疑似的にモードレス画面を開けるようにしています。もう少し具体的に言うと、画面の外側にiframeを作って、内側に中身の表示をさせています。親画面から疑似的なウインドウを作っているだけなので、別画面として見ることができず、作られた子画面を親画面の外に移動することはできません。適切な例えかわかりませんが、この場合の子画面は妊娠中の母親の子供で母親と一体となっているようなイメージ。
事象:
親画面から開いたモードレス画面に「印刷」ボタンがあって、「印刷」ボタンが押された場合、印刷物は出ていますが、画面の内容はA4紙にピッタリ入らず、文字が小さく、画面の一番右側からA4紙の半分くらい余白が出ています。
原因:
どうしてこんな風になっただろうと考えたら、印刷範囲が子画面ではなく、親画面になっていて親画面に合わせて印刷されたものになります。親画面範囲に合わせるため圧縮して印刷されたような感じです。
試したこと:
window.openにして画面を開けば、別画面として開くので、こうようなことになりませんが、仕様上の関係でそれはできません。疑似的にモードレス画面を開かなければなりません。そこで、印刷ボタンを押して一度window.openして終わったら画面を閉じるようにします。
調査したこと:
印刷ボタンを押した後に、「window.print()」の処理がありますが、印刷範囲が親画面ではありますが、windowオブジェクト自体は子画面のオブジェクトになっています。
利用環境:
windows10
Internet Explorer
showModelessDialogの場合はもう一度画面を開く必要なく、そのまま子画面範囲で印刷するので、元の動きを復元する観点では、完全に復元できていないことになります。もしさらにいい案(印刷のために一度window.openする必要がない案)があれば教えて頂けないでしょうか。
あなたの回答
tips
プレビュー