What's?

Home / iOS9 以下 Safariでjavascriptがちゃんと動かない時にチェックしたい項目

iOS9 以下 Safariでjavascriptがちゃんと動かない時にチェックしたい項目
November 07, 2017

DEVELOPMENT

web
js
iOS

PCとスマフォ両方に対応したWebサイトを作る際、PCやiOS10以上、Androidだと問題ないのに、iOS9以下だと正常にJavascriptが動かないことがあります。 意外と知られてないですが、Javascriptのmethodの書き方や、細かな部分でiOS9以下のSafariではちゃんと動かない場合があります。 そんな時下記の項目をチェックしてみて下さい。僕はこれで数時間ハマりました。

Date関数

文字列型(String)からDate型に変換する際、文字列のフォーマットに注意する

new Date("yyyy-mm-dd")

普通に問題なさそうなのですが、iOS9のSafariだと、「invalid date」が帰ってきてしまいます。

new Date("yyyy/mm/dd")

-には対応しておらず、/でなくては行けません。

methodの初期値

Methodの定義にて、引数の初期値を設定しておきたい場合がありますが、これはiOS9のSafariだとNGです。

function methodA(param = array())

こういう初期値の設定のあるmethodを定義するとエラーになりますので、避けましょう。

iframe使用時、子から親の取得

子から親の要素を操作したい時、

window.parent.document

と指定すると直近の親が取得できますが、iOSのSafariだとちゃんと動かないときがありました。

window.top.document

を使うと取れました。これはもともと一番上の親を取得しますが、あしからず。

clickイベント

クリックイベントを発火させるためには、クリックできる要素でなくてはなりません。

a, bottom

などの要素に対してclickイベントを発火させましょう。他のブラウザの場合はdivやspan等なんでも発火しますがしてくれません。 でもどうしても、divなどでイベントを発火させたいときは、

css で下記を定義する

.element {
  cursor:pointer;
}

もしくは、clickイベントの定義に

$("#element").click(function(){
  .....
}).css('cursor','pointer');

と追加する

それでもだめな場合は、

$("大本要素").on("click touchstart", "要素指定", function(){
  .........
}).css('cursor','pointer');

とすると、聞くようになりました。

他にも見つけたら追加していきます。

なおiOS10以降は上記の問題は解消されてるっぽいです。

うかい / 株式会社UKAI
うかい@代表取締役兼エンジニア株式会社UKAI
Nobuyuki Ukai

株式会社UKAI 代表取締役CEO。建築を専攻していたが、新卒でYahoo!Japanにエンジニアとして入社。その後、転職、脱サラ、フリーランスエンジニアを経て、田舎へ移住し、ゲストハウスの開業、法人成り。ゲストハウス2軒、焼肉店、カフェ、食品製造業を運営しています。詳細はこちらから

🙏よかったらシェアお願いします🙏
WRITTEN BY
うかい / 株式会社UKAI
うかい@代表取締役兼エンジニア株式会社UKAI

Nobuyuki Ukai

株式会社UKAI 代表取締役CEO。建築を専攻していたが、新卒でYahoo!Japanにエンジニアとして入社。その後、転職、脱サラ、フリーランスエンジニアを経て、田舎へ移住し、ゲストハウスの開業、法人成り。ゲストハウス2軒、焼肉店、カフェ、食品製造業を運営しています。詳細はこちらから

CONACT
入力して下さい
Slack からもどうぞ

※お気軽にどうぞ!(6月20日まで有効!お早めに)

COPYRIGHT © 2020 UKAI CO., LTD. ALL RIGHTS RESERVED.