JavaScript内のデータをFlashのファイルダイアログで保存することはできるか?
先日、SafariとOperaのファイル保存問題を解決する糸口を見つけた。 琴線探査: 「Downloadify」Safari・Operaのファイル保存問題解決の糸口 一言で言ってしまえば、FlashのExternalInterfaceを使ってJavaScript内のデータをFlashに送り込み、Flashのファイルダイアログで保存できないか?という話。 結論から言うと、すぐに頓挫した。試したのはこんなコード。 package { import flash.display.Sprite; import flash.external.ExternalInterface; import flash.net.FileReference; public class FileSaver extends Sprite { public function FileSaver() { ExternalInterface.addCallback("toSWF", toSWF); } public function toSWF(text:String):void { try { var fr:FileReference = new FileReference(); fr.save(text, "ファイル.txt"); } catch (err:Error) { ExternalInterface.call("alert", err.toString()); } } } } 確かにブラウザからFlashにデータを送り込むことはできた。しかし、ブラウザ側(JavaScript)からtoSWF()を呼ぶと、保存しようとしたところでエラーになる。 一体、このエラーコード「#2176」とは何か? ランタイムエラー - Adobe ActionScript® 3(AS3 )API リファレンス 2176 ポップアップウィンドウを表示するアクションなどの特定のアクションは、マウスをクリックしたりボタンを押したりするユーザー操作によってのみ...