[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コード

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

CSSのコード

/* flash部分の指定 */
div#flashcontent{
}
/* 基本、非表示 */
div#flashcontent_fw_print{
  display:none;
}
/* 印刷時 Gecko(Firefox)のみ、swfを非表示、印刷用を表示*/
@media print {
 .gecko div#flashcontent{
    display:none;
 }
 .gecko div#flashcontent_fw_print{
    display:block;
 }
}

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

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

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

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

Popularity: 44% [?]

written by ANN

add to hatena hatena.comment (23) add to del.icio.us (0) add to livedoor.clip (3) add to Yahoo!Bookmark (4) Total: 30

Leave a Reply