FlashはHTML画面をキャプチャできませんです。
2008 年 10月 15 日「できないこと」なんですが、仕事でよく「これできます?」と聞かれるのが、「ブログパーツをクリックすると、そのブログパーツが貼り付けられているHTML画面をキャプチャして、そいつをフローティングFlash内でどうにかこうにかいじりたい」というリクエスト。残念ながら、FlashはHTML画面をキャプチャできません(おそらく 汗)。
それができてしまうと、悪意あるFlashコンテンツが、何の断りもなくしれっとユーザーが閲覧しているHTMLをキャプチャして、どこかわけのわからぬところに送信してしまう・・・とかが置きかねないから、多分この先もできないのだと思います。
「じゃ、じゃあこれはどうやっているの?」と聞かれるのが、てっく煮ブログさんの「ワリオランドシェイクみたいに HTML が崩壊するブックマークレット(とそのソースコード)」で、リンク先にも解説がありますが、
- FlashをHTMLの全画面(body100%)にフローティング配置。
- JavascriptでHTMLのソースを解読して、imgタグが見つかったら、その位置とURLとサイズをflashに送る。
- flashは、2でもらった画像情報から、Box2D(物理シミュレーション)の要素を作り表示。
- 物理シミュレーションスタート。
ということをやられています。つまり、HTML→Javascript→Flashという経路で「HTML内画像のFlashへのキャプチャ」を可能にしてあります。月刊剣道時代ブログパーツでは、HTML内の「文字情報」をJS経由でFlashに送っていたりして、こんな感じでHTMLの情報をJS経由で送ることはできるのですが、HTML・Flash間でフォントの違いなんかもあったりして、「Flash内に完全にHTMLキャプチャを再現する」というのは相当難しいと思われます(根気よくやればできるのかな・・・)。
他にも、「なんか画面全体をキャプチャして動かしているっぽいブログパーツ」がいろいろあるのですが、よくその仕組みを調べてみると、Javascriptで画面全体のCSSプロパティを動かしていたり・・・と工夫して「キャプチャしてるっぽい」のがあったりします。
「Flash HTML キャプチャ」でググっても「できないから」なのか、なかなかそれについて言及しているサイトが見つからないので、一応ここに書いておきました。「え、できるんだけど」という方いらっしゃいましたら教えてください!
2008/10/20追記
仕事の上司から、「ねぇねぇ、じゃあこれは?」と聞かれたのがどこでもラストガイのサイト、およびそのブログパーツ。あ、あれ?キャプチャできてる!Whyなぜに?と思って、Fiddlerで調べてみたら、phpにURLを送るとそのphpがそのURLのHTMLをキャプチャしてFlashに送る・・・ということをやっているようです。phpは全くわからんちんですが、「php、HTML、キャプチャ」でググると、こことかここが参考になるのかな?
