My Photo

« 「ダークゾーン」読了 | Main | auのLTEでhttpとhttpsでIPアドレスが違った »

October 19, 2013

iOS7に更新したiPadのSafariで問題発生

iPadのiOS7に更新したら今まで動いていたWEBアプリが動かなくなった。
JavaScriptがうまく動いてないっぽい。コードはこんな感じ。間違ってるところがあるかもしれないが。

var flag = isIOSSafari();
subWin = window.open("empty.html", "sub", "width=200,height=200");
if (flag) {
	window.focus();
}
$.post("getServiceUrl.php", {"param": param }, function(data) {
	subWin.location.href = data['url'];
	if (focusFlag) {
		subWin.focus();
	}
}

上記のJavaScript、jQueryのコードは空の子ウィンドウを開いてそこに別のドメインのWEBサービスの画面を表示する処理。
最初の isIOSSfari() はユーザエージェントを調べてiPad,iPhoneのSafariの場合に true を返す。
2行目で子ウィンドウを開く。
3~5行目はiPhone、iPadのSafariに対する特別対応で、子ウィンドウを開いた後に親ウィンドウにフォーカスを戻している。
6行目からはAjax。"getServiceUrl.php" は別ドメインのWEBサービスのURLを返す。そしてそれを子ウィンドウにセットしている。
そして8~9行目でまたSafari対応で子ウィンドウにフォーカスを移している。
Safari対応の部分は後から書かれた。その部分がなくてもPCのブラウザやAndroidからは問題なく動くが、iPhoneとiPadのSafariでうまくいかなく追加された。iPad、iPhoneのSafariではウィンドウにフォーカスがないとそのウィンドウのJavaScriptがうまく動いてくれないらしい。

これがアップデート前は動いていたが、iOS7にアップデートしたら動かなくなった。
具体的にはサブウィンドウは開くが開いたまま
調べると、isOSSfari()はちゃんと動いているようだ。window.focus() が効いていないのだろうか?

対応策として子ウィンドウを開いてからURLをセットするのではなく、子ウィンドウを開くときにはじめからURLをセットすることを考えた。しかしそれだと子ウィンドウが開いてくれない。Safariのポップアップブロック機能が効いているのかも。URLが親ウィンドウのとは別ドメインだからか。

また別の対応策として、子ウィンドウの方でWEBサービスのURLを取得するように修正するというのも考えた。つまり現在は

  1. 子ウィンドウを開く。
  2. 親ウィンドウでサービスのURLを取得。
  3. 子ウィンドウにURLをセット。

としているのを、

  1. サービスのURL取得に必要なパラメータをつけて子ウィンドウを開く。
  2. 子ウィンドウ内のJavaScriptでURLを取得して子ウィンドウのURLを書き換える。

と修正することを考えた。
しかしこれだと修正がJavaScriptだけにとどまらなずPHPの方にも及ぶ。
なんとかJavaScriptだけの修正できないか、思案中。
iPadのSafariにはPCのブラウザのような開発者ツール(FireBugsなど)的なものがあればなあ。そうすれば調査は楽になるしもっとはっきりとしたことがわかると思うのだが。

« 「ダークゾーン」読了 | Main | auのLTEでhttpとhttpsでIPアドレスが違った »

JavaScript」カテゴリの記事

プログラミング、技術情報」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/58416226

Listed below are links to weblogs that reference iOS7に更新したiPadのSafariで問題発生:

« 「ダークゾーン」読了 | Main | auのLTEでhttpとhttpsでIPアドレスが違った »

May 2017
Sun Mon Tue Wed Thu Fri Sat
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof