[AS3.0]loaderInfoのbytesTotalがゼロになる原因 mysqlデータベースの修復
5月 17

Win/MacのFirefox(手元のバージョンは2.0)にて、HTMLページを印刷する際、コンテンツにFlash(SWF)が含まれていると、その部分がぽっかり空白になって印刷されてしまう。

FirefoxでHTMLと一緒にFlashコンテンツを印刷したいのだが……どうしたらよいものか。
いろいろ調べた結果、
:
:
:
ずばり、対処法はありません。

SafariやIEだと問題ない。

どうもFirefoxの仕様のようです。(バグ?)
Firefox 3はどうなんでしょうか。まだ使ってません。

HTMLはそもそも印刷に向いてない!というのは、制作側の言い分で、ほとんどのオーナーさんは、かなりの確立でHTMLページを印刷してチラシ代わりに使ったり、資料として使ったりする。

CSSのmediaでprintを指定しておけば、印刷時にFlashの代替えを表示することは可能だが、Safari/IEではFlashコンテンツを印刷できるのに、静止画に差し替えるのはもったいない。
Flash(SWF)を印刷できないFirefoxの時のみ、静止画に差し替えたいのだ。

そこで、
・Safari/IEは、通常時(screen)、印刷時(print)ともに、Flashコンテンツをそのまま使用
・Firefoxは、通常時は、Flashコンテンツを使用、印刷時は、代替えのイメージや文字を表示

する方法を考えた。

つまり、ブラウザ毎にCSSを切り替えかつ、mediaもチェックするということ。

ブラウザ毎のCSSの切り替えには
Simple CSS Hack - CSS Browser Selector - SCREAMO
CSS Browser Selector
を使った。これはコードも短いし、便利だね。

で、実際に作成したコードはこんな感じ。

HTMLコード

HTML:
  1. <script src="/lib/css_browser_selector.js" type="text/javascript"></script>
  2. <div id="flashcontent">
  3. // フラッシュコンテンツ
  4. </div>
  5. <div id="flashcontent_fw_print">
  6. // Firefoxの印刷時にのみ、表示する部分
  7. </div>

CSSのコード

CSS:
  1. /* flash部分の指定 */
  2. div#flashcontent{
  3. }
  4. /* 基本、非表示 */
  5. div#flashcontent_fw_print{
  6.   display:none;
  7. }
  8. /* 印刷時 Gecko(Firefox)のみ、swfを非表示、印刷用を表示*/
  9. @media print {
  10.  .gecko div#flashcontent{
  11.     display:none;
  12.  }
  13.  .gecko div#flashcontent_fw_print{
  14.     display:block;
  15.  }
  16. }

これで、Firefoxのみ、印刷時に代替えブロック(div id="flashcontent_fw_print">が表示され、Safari/IEでは、そのまま印刷されます。
FirefoxがFlashコンテンツの印刷にちゃんと対応してくれれば、こんな小手先の対応しなくてもいいんだけどね~

理想的なのは、Flashが、ブラウザからの印刷リクエストをちゃんと理解して、そのときに表示するステージを指定できたら一番いいんだけどねー。たとえば、IEからFlashが含まれるページを印刷しようとすると、その時点で表示されているFlashが印刷されてしまう。
そうじゃなくて、Flash側でブラウザの印刷リクエストを処理できれば、印刷向けに用意したムービークリップなりを表示して、印刷しても情報の不備が無いようにできたらいいんだけどね~

adobeは印刷のソリューションもやってるんだから、そのあたりもちゃんとやってくれてもいいのにネー。

…もっといい方法があったらコメントorトラバお願いします。

Popularity: 59% [?]

written by ANN

add to hatena hatena.comment (20) add to del.icio.us (0) add to livedoor.clip (1) add to Yahoo!Bookmark (3) Total: 24

Leave a Reply