iOS8でwindow.close()が効かないバグ (8.1.1で修正済)

window.close()が効かないバグは
2014年11月のiOS 8.1.1アップデートで無事に修正されていました。

以下は、~8.1.0 時点の記事です。

iOS 8.0.x 8.1.0 のSafariでは
開いているタブを閉じるwindow.close()が使用できないバグがあります。

調査してみたところ、どうやら
window.close()の使い方がマズイのではなく
iOS8のSafariが現時点でこの機能に対応していない旨のやり取りがされていました。

参考:
javascript – window.close() doesn't work on iOS 8 GM seed – Stack Overflow
(Appleのデベロッパーフォーラムは、アカウントがないと見られないので、とりあえずこちらへリンク)

今できる対応策は
同一ウィンドウ内での遷移で代用できるところは
バグ修正がアップデートされるまで、別窓遷移をやめることくらいでしょうか。

iOS 8.0は、他にも致命的なバグを見つけちゃってるので
2014年10月20日のiOS8.1アップデートで修正されてないか期待していたのですが
残念ながらほとんど直っていませんでした orz
たとえば、テキストボックス関連でこんなバグがあります。

カーソルを右端まで移動できない

テキストボックスに表示幅を超える文字を入力すると
カーソルを右端(最初に入力したあたり)まで戻せなくなります。

たとえば、こんな幅のテキストボックスがあって
あああああいいいいいううううう
と入力した場合

[|         ]

8.0までは、このようにカーソルが枠外に見切れる怪現象がありました。

[あああああいいいい]いううううう|

8.1になると、最初のころ入力した内容は左に見切れてくれるようになりましたが

[いいいいううううう|]

「あ」のところまでカーソルを戻そうとしても、これ以上左に移動できません。

[|いいいいううううう]

入力に遅延

formタグ内のinputやselectなどの情報が多い場合
テキストボックスの入力に遅延が生じます。

たとえば
テキストボックスと選択肢が99項目あるセレクトボックスがセットになった入力欄が
form内に30セット入っている場合

テキストボックスへ文字を入力すると
キーボードから入力した文字がテキストボックスに表示されるまで0.5秒ちかくタイムラグがあります。

formタグ内に入っている情報量を削ると、この症状は回避できるので
この例ならば、このような代替案になります。

  • セレクトボックスをテキストボックス欄へ変更(99個あるoptionがかさばっているのでそれを削る)
  • 一度に表示する入力欄を30セットから5セットに減らす

こちの入力遅延バグもiOS8.1.0では改善されていなかったので
次回のアップデートに期待です。

関連記事

Pocket