[Apollo] WebKit を搭載した Apollo は少し Safari と動作が違うみたい

Adobe のプロダクトマネージャ Mike Chambers さんの記事 『Why Apollo?』 より
The HTML engine used within Apollo is the open source WebKit engine. This is the engine behind a number of browsers, including KHTML on KDE and Safari on Mac OS X.
Adobe のクロスプラットホーム対応デスクトップ・アプリケーション実行環境 Apollo は、
FLASH だけでなくて WebKit(≒Safari、KHTML)ベースのウェブブラウザ機能を搭載している。

『Apollo 登場!もう Safari の確認用に Mac 買わなくてよくね?』 の通り、ついに Windows 内で
Safari の動作確認ができるのかも! と思ったけど、Apollo と現行 Safari は少し違うみたい。

Safari で XHR を使う場合、サーバ側が出力する Content-Type ヘッダで charset=UTF-8 を
指定していないと、responseText で得られるテキストのエンコーディングが Latin-1 扱いになり、
UTF-8 なテキストファイルで文字化けが発生してしまう問題がある。
回避策は 『Safari の responseText で UTF-8 コード文字化け回避』 に書いたコード
function recover_utf8 (text) {
    if ( navigator.appVersion.indexOf('KHTML') > -1 ) {
        var esc = escape(text);
        if ( esc.indexOf('%u') < 0 && esc.indexOf('%') > -1 ) {
            text = decodeURIComponent(esc);
        }
    }
    return text;
}
のような関数を通すと Latin-1⇒UTF-8 変換できて、文字化けを回避できる。

しかし、Scout ではこの文字化けが発生していなかった。
responseText をデフォルトで UTF-8 扱いするように変わっている模様。

Scout (Apollo 1.0α) で表示した場合:

Mozilla/5.0 (Windows; U; en) AppleWebKit/420+ (KHTML, like Gecko) Safari/419.3 Apollo/1.0.Alpha1

Safari で表示した場合:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/419 (KHTML, like Gecko) Safari/419.3

『文字化け対策なし』の行が、Safari でのみ文字化けしているのがポイント。
Safari だと文字化けしていたものが Apollo で文字化けしなくなったのは、
WebKit 419→420+ の違いなのか、あるいは Apollo の独自仕様なのかは不明。
420+ のためだとすると、Safari も次のバージョンでは直るのかな?

また、『Safari ブラウザ・クラッシャー』 のコードは、AppleWebKit/419 な Safari を
クラッシュさせるのだけど、AppleWebKit/420+ な Apollo はクラッシュしない。
他にもいろいろ違いがあるのかもしれない。

結論:Apollo は単純には Safari の動作確認には使えなそう。(残念)



(2007/04/09:追記)

WebKit Nightly Builds で表示した場合:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; ja-jp) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3

最新版 WebKit を試してみると、文字化けしなくなっていた! クラッシュもしない。
恐らく Apollo は最新版に近い動作なんですね。現行の公式 Safari は少し古いまま?

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 1

驚いた

この記事へのコメント

この記事へのトラックバック

  • ページ確認のための Safari は不要?

    Excerpt: Apollo が搭載している Webkit を使ったブラウザちっくなアプリを作ってしまえば,もう Safari いらないかも,などと何かの作業中にふと思ってみました. (詳しくは 先人方の記事 を参照.. Weblog: 岩家ぶろぐ racked: 2007-04-29 05:10