2009-04-07 4 views
4

私は、シンプルなスタイルシートを持つシンプルなテーブルベースのHTMLページを持っています。私はIE7とFireFox 3でページを開くことができ、まったく同じように見えます。私は両方のブラウザからページを印刷することができ、まったく同じように見えます。ユーザーがクリックするとIFrameからページを印刷するときに、異なるフォントサイズが表示されるのはなぜですか?

window.frames[iframeId].location.href = "../ProblemPage.htm"; 

:私たちは、ASP.Netページ内で、私はiFrameを作成し、今すぐページ「ProblemPage.htm」

を呼び出し、このようなIFrameのにそのHTMLをロードしますASP.Netページ上のボタンを押すと、それはこのない関数を呼び出します。私はそれを行うと、それを印刷すると、Firefoxのバージョンは、私が個別にページをロードし、それを印刷したときにそれがなかったとまったく同じに見えます

window.frames[iframeId].focus(); 
window.frames[iframeId].print(); 

。 IE7版では、フォントサイズはすべて半分に縮小されています。

ページ設定の設定は、デフォルトでかなり設定されていることに注意してください。私はさまざまなプリンタを使い、PDFに直接印刷しました。私は同じCSSを使用していることを確認するためにキャッシュを繰り返しクリアしました。しかし、同じIE7セッションでは、ページ自体が一方向に印刷され、上記のようにIFrameを介して印刷されたページは、より小さなフォントで印刷されます。単一のFirefoxセッションでは、ページ自体がIFrameを介して印刷されたページとまったく同じ内容を印刷します。

アイデア?私のスタイルのいくつかは、IE上で印刷しているとき、またはIEがIFrame内で異なるスタイルを解釈しているときにページに「漏れている」ように見えます。

UPDATE

まあ、私はそれが "スタイルをリーク" されていないと思います。もし私がYahooのCSS ResetをProblemPage.cssファイルに入れたら、それは4つのすべてのケースで両方のブラウザで確実に取り上げられますが、問題は残ります:IEがIFrameからページを印刷すると、フォントサイズが大きくなります。 2

UPDATEは、問題を発見したことはありません。簡単なテストプロジェクトでも同じ問題が発生せず、マスターページやテーマなどに問題があると思われます。興味深いことに、問題はIE6ではなく、IE7で発生しました。

私は、条件付きでコメントされたCSSをIE7用に使用して問題を回避しています。それは私が条件付きCSSを使用しなければならなかったアプリ全体の唯一の部分でした。

まだ回答がありません(また、次に何を探すかについてのWAGもいくつかあります)。

答えて

1

印刷しようとしているページが正しいスタイルシートを参照していることを確認してください。いくつかのブラウザが親を引っ張っていない場合は、他の人がそうでないかもしれない。

+0

それはまったく同じプロジェクト内の同じHTMLファイルです。あるケースでは、私はそれを直接参照します。もう1つは、別のページのIFrameにロードし、上記のスクリプトで印刷します。変更が表示されるため、CSSが表示されています。それはちょうど非常に矛盾しています。 – CMPalmer

1

"小さいフォントサイズ"を説明したとき、私はCSSに積み重ねられた "font-size:0.8em"という特定の事態を考えました。積み重ねると、余分な小さな文字を表示していたテキストが、EMフォントサイズの親要素の内側にあり、それ自体が1つあることを意味します。

iframeでこのようなことは起こりそうにないと思いますが、その場合に備えて、それを投げ捨てると思いました。

+0

私の唯一のフォントサイズの設定は本文です。このCSSは実際に印刷するためのものなので、私はポイントを使用しています。本文{font-size:11pt; } CSSをリセットしたり、font-sizeを置くべきではありません:100.01%上にこれを外してスタッキングの設定をキャンセルしますか?それは絶対的なサイズは言うまでもありません。 – CMPalmer

+0

ええ、まあ、それはショットの価値があった!あなたが言ったように、積み重ねられたときに11ptフォントの縮尺は変えられません。好奇心。 – Matt

1

音が奇妙です。オンラインテストせずに診断するのは難しい、しかし:あなたは親ページではJavaScriptから()をwindow.print場合

  • 同じことが起こるのでしょうか?

  • 親フレームのスクリプトで関数を呼び出すか変数を設定すると、(親ページへのタイムアウトまたはポーリングによる親ページへの戻り値を返すとき)print()が呼び出されますそれ自身の窓?

+0

私はそれを試してみましょう。私は他の変数を減らすための非常に最小限のプロジェクトから始めようとしています。そのプロジェクトが問題を示している場合、私はすべてのコードを投稿します。それがなければ、それは私の問題をゼロに助けてくれるでしょう... – CMPalmer

+0

これまでのところ、最小限のプロジェクトは正常に動作します。それは、より小さな(しかしそれでもなお大きな)一連の可能性、つまりマスターページにまで絞られていますか?デフォルトスタイル?他に何か? – CMPalmer

0

あなたはこれを試すことがあります。

function pr(frameId){ 
    var printed; 
    var iframe = document.getElementById(frameId); 
    var ifWindow = iframe.contentWindow || iframe; 
    ifWindow.focus(); 

    try { 
     var printed =ifWindow.execCommand('print', false, null); 
    } catch (e) { 

    } 

    if (! printed) { 
     ifWindow.print(); 
    } 
} 
関連する問題