ぶちの備忘録

3日経つと忘れる内容をまとめています。

iPhoneのみJavaScriptでエラーが発生する

投稿日:2022-06-16
某IEさんが消え、EdegがChromiumベースになって、
iPhoneやAndroid、PCブラウザの挙動の違いで困ること減ってきていますが、
まだありますね・・・

サイトを表示したときにiPhoneだけ見れなくて困ったというお話です。

原因は・・・

「SafariがJavaScriptの正規表現の「lookbehind」に対応していない」というのが原因でした。
※正規表現の「(?<= )」「(?<! )」が非対応


<参考URL>js-regexp-lookbehindの対応状況
https://caniuse.com/js-regexp-lookbehind

発生した挙動

今回のケースでは、サイトをブラウザで見たときに下記の状態となりました。
・PC、Androidでは問題なく表示されていた。
・iPhoneで見たときにcssが一切あたらない表示になった。

調査開始!

発生した挙動から、iPhoneだけJavaScriptでなんらかのエラーが発生した関係で、
cssファイルの読み込みが行われてないのでは?と推測しました。

なので、iPhoneをMacにつなげて、Webインスペクタで確認・・・!

案の定エラーが出ていたのでメッセージを確認!
「SyntaxError: Invalid regular expression: invalid group specifier name」

教えてGoogle先生!

エラーログを読んだだけではピンと来なかったので、
Google先生にエラー原文で検索かけてみる・・・!

いくつか見て「正規表現」周りの問題の可能性が高そうと判断!

正規表現使っているところを探して、コメントアウトしてみたところエラーが発生せず、
iPhoneでもちゃんとサイトが表示されました!

修正してやる!

原因となってる処理は特定できたので、処理内容の確認・・・
すると、正規表現使わなくてもきれいにできそうな内容でした・・・(汗)

今回は「正規表現の利用をやめる」って修正にして解決しましたとさ!