2012年2月24日金曜日

Windows Phone7のIEとの戦い



私,IS12Tを持っているのですよ。WP7.5 Mango。
買ってすぐにIEで色々なサイトを見ました。

一部JSを利用しているサイトが見れないところがあったり,
一応スマートフォンなのに,誰もUA対応していないのかPCサイトが表示されるのが基本だったりとかなり踏んだり蹴ったりな感じでした。

で,本題として,現在スマートフォン対応ページ書いてるんですが
iPhone対応した後,Android持ってないので,WindowsPhone7でやってみっかって思って発見してしまったWP7大丈夫ですか?って気分になったWP7 IEについてです。

このコードを見てください
========================================
//表示領域を取得
var d = document.getElementById("result");
var xhr = new XMLHttpRequest();

xhr.open("GET", "test.json", true);
xhr.onreadystatechange = function(){
    //受信できたら
    if (xhr.readyState === 4 && xhr.status === 200) {
        d.innerHTML += JSON.parse(xhr.responseText)["test1"];
     }
};
//送る
xhr.send(null);
========================================

恐らくどこも問題ないはずです。
というか動くはずです。
しかしこれがWP7のIEだと正常に動かないです。
どこがだめなのか。





答えは1行目と6行目
つまり,コメント!
日本語のコメントです。
何が駄目なのか改行を見失って,次の行も勝手にコメントアウトします。

全部が駄目なわけじゃなくて,最後の「送る」ってコメントは大丈夫だったり,
たまにうまくいったり,まぁよくわかりません。
解決策は,日本語コメント書かない,もしくはShift-JISにする。
EUCはUTF8と同じで動いたり動かなかったり…
Shift-JISが100%動くという保証も無いです。
少なくとも上のコードはShift-JISにしたら安定して動くようになっただけです。
まぁ日本語コメント残った状態でリリースなんて,ありえないですよね(チラ


他にも,WP7独自の問題なのかわからないのですが,
XDomainRequestだと,same domain相手のAjaxができないです。
これはIE全体で仕様なんでしょうか?
ちょっとWindows持ってないので,デスクトップIEで確かめられないのです。

実は書く前はコメントとXDomainRequestの2つで書こうと思っていたので,やべーWP7IEやべー!って感じのふりでこの投稿書きはじめたのですが,
嘘だったらどうしようって思ってデバックしてたらこれIE全体の問題じゃね?って思ってよくわからなくなったので,コメント問題だけにしました。
XDomainRequestについては,Windows機に触れるときにテストしたいと思います…

以上です。

0 件のコメント:

コメントを投稿