2013-03-28 4 views
8

クライアントのWebサイトには製品リストがあります。製品の価格は、ページの下部にあるiFrameを通じて動的に引き出されます。ページにはJavascriptがあり、iFrameのコンテンツの大きさに応じて自動的にこのiFrameのサイズを正しい高さに変更します。JavaScript:完全なWebページを印刷すると、IEはページ上のiFramesの内容を印刷していないようです

クライアントは、ページを印刷するとき、iFrameの価格がどこにあるのかを見ることができないと報告しています。明らかに、IEでは印刷されていません。

私はMacを使用しているため、IEでテストすることができないため、これを試してみるのは難しいです。

誰でもこの状況で予想される動作を明確にすることはできますか? iFramesがデフォルトで含まれているの両方のページを印刷するようにIEを設定することは可能ですか?もしそうなら、私はこれについてどうやってやりますか?親ウィンドウから特定のフレームを印刷するための例しか見つけることができません。

ありがとうございます!

+0

をあなたの問題を解決します。これは、あなたの質問に答えていませんが、あなたが将来的にIEでテストすることを可能にする、このプラグインを試してみてください - http://habdas.org/emulating-ie-with -virtualbox/ –

+0

IEがiframeの印刷をどのように処理するか、ウェブサイトのURLを提供する方が良いか、または問題を似たHTMLページ(CSSを含む)のソースを提供する方が多少異なる場合があります。 – fitheflow

+0

私は、他の人がIE [ここ](https://issues.liferay.com/browse/LPS-16399) – fitheflow

答えて

0

これは面白かったので、私はIE8を使ってテストを行いました(ローカルではなくサーバー上)。

IE8で、私が作成したもののiframeを含むWebページが印刷されました。そして最初に内容の一部を印刷した(他の内容は黒くなった)。 2回目の印刷で、iframeの内容はすべて黒です。

しかし、私の例では、iframe内のコンテンツは絶えず変化しています(フェードインとフェードアウトの画像とテキスト)。その背後にあるCSSの背景は黒です。

このテストでは、iFrameの内容がメインページの内容とは異なるホストサーバーにあります。しかし私が知る限り、ここにはクロスドメインポリシーファイルがあります。

クロスドメインポリシーの問題は私の最初の推測でしたが、インターネットエクスプローラがスクリーンショットをプリンタに送信する際に、スクリーンショットをレンダリングする方法にはいくつか問題があります。

0

JavaScriptを使用している場合は、window.print()と一緒にprint media CSSの機能を試してみてください。

1

予想される動作は他のブラウザで発生しているものである必要があります。ページが印刷されている場合は、iframeも一緒に印刷する必要があります。他の人が間違っていると想像するのは難しいでしょう。以下は

問題かもしれませんが、コードを見て/よりを知らなくても、それは詳細を知ることは難しいものに投機のビットです:

この問題が原因、あなたがかもしれないいくつかのCSSへの可能性は、あなたのページにあります。私は同様のiframeの印刷問題を読んでいます。visibilityhiddenに設定されていたため、最初はiframeが正しく印刷されませんでした。この特定のケースを回避するために、ユーザーはwidthheight0pxに設定する必要がありました。あなたのサイトについてもっと知らないと、私はこれが起こっていると正しく予測できません。

別の問題は、iframeの内容に基づいて動的にサイズを変更することが原因です。簡単なテストは、そのセクションをコメントアウトし、iframeに汎用widthheightを設定して、印刷の問題がまだ発生するかどうかを確認することです。おそらく、これらの動的スタイルは印刷スタイルシートに持ち越されておらず、適用されていない可能性があります(したがって、まったく表示されません)。

迅速な提案として、css media typesに見て:

印刷ページ化材料のためにと 印刷プレビューモードでは、画面上で見た文書を対象

。ページングされたメディアに固有の書式設定の問題については、の のセクションを参照してください。

参考リンクPrint Specification

0

IEが動作しない理由を私は説明できませんが、多分あなたは強制するためには、親ページにコードのこの部分を追加することで問題を解決することができます更新する各iframe:

$(document).ready(function() { 
    if($.browser.msie) {//Only for IE 
     $('iframe').each(function() { 
      $(this).attr('src', $(this).attr('src')); 
     }); 
    } 
}); 

ブラウザを取得するには、thisメソッドを使用します。
そして、私はcontentDocument.location.reload(true);メソッドを使用して、iframeが更新されていることを確認していません。 SO topicを参照してください。

+0

$ .browser'がjQueryの1.9から削除されました:http://api.jquery.com/jQuery.browser/ – Chase

+0

はい、そうです。新しいメソッドは、ブラウザが特定の機能をサポートしているかどうかを検出し、ブラウザ名を取得しないため、古いjQueryバージョンを使用する必要があります。それは[jQuery.support](http://api.jquery.com/jQuery.support/)です。私たちの場合、どこに問題があるのか​​わかりません。 – JoDev

関連する問題