URLの後ろに改行なんていれてちゃ駄目だったのね[AIR/Flex]
(2011-01-22 14:25:22) by shinoda


HTMLコンポーネントでも、HTMLLoaderクラスでも表示は一緒」に書いたように、AIR アプリのHTMLコンポーネントでインターネット上のWebページを表示した時に、外部CSSファイルや画像ファイルを一切読み込まない(つまり、URLで指定したHTMLだけ読み込んでお終い)という状況が発生していた。

「なんやねん!こんなしょぼい仕様なんかい!?」と怒っていたのだが、原因は俺だった。ごめん・・・Adobe社。

結局、原因は「URLの最後に改行コードがついていた」からであった。

テキストファイルから URL を読み込んで、それをHTMLコンポーネントのlocationプロパティにセットするのだが、末尾の改行コードをとりわすれてた。

なので、

url  = (url.split("\r")).join("");
url  = (url.split("\n")).join("");

web.location   = url;

という具合に、locationプロパティにセットする前に CR/LF コードを削除するようにしてやればバッチリであった。

URL の後ろに改行コードが入ってると、怪しいURLと判断して、そこからのリンクを全部無視してしまうとか、そういう仕様なのかね?

URL の後ろに改行コードが入ってると、「外部の画像ファイルやCSSファイル等を一切読み込まない。その代わり、ローカルディスク上にある画像であれば表示できる」という動きをする。ローカルディスク上の画像ファイルは読み込めるということは、やっぱセキュリティ上の制限をかけてるのかなあ・・・

ま、単純に Flex にバグがあって、予想外の動きをしているという可能性も捨てきれんがなあ(笑)


コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8