at backyard

Color my life with the chaos of trouble.

JavaScriptのfocusメソッドを使ったときにiPhoneのSafari上でソフトウェアキーボードが出てこないようにしたい

先日のポストにも書いた下記のサイト。
(Slackのリマインダーの日時指定や時間指定方法をいつも忘れるので、用途ごとにすぐにコピペして利用できるサイトです)

slack-remind.shinshin86.com

こちらのサイトではコピーボタンが実装されており、コピーを押すことでクリップボードにスラックのリマインダーコマンドをコピーできるようにしています。

f:id:shinshin86:20210422164052p:plain
こちらがそのコピーボタンです。

さて、このコピーボタンですが、実はリリース直後に一つ問題が発生していました。
というのも、iPhoneSafari上ではこのボタンを押した際にソフトウェアキーボードが表示されるようになってしまっていたのです。

問題の原因としては、クリップボードにコピーを行う処理をJavaScriptで記述していたのですが、その処理の中で利用されている input要素に対する focusメソッドを使用した際にソフトウェアキーボードが表示されてしまっているようでした。

ソフトウェアキーボードをSafariで出さないようにするためにはreadonly属性を付与すること

ソフトウェアキーボードを表示させないようにするための対応策は、思いの外シンプルでした。
使用している input タグに対して readonly 属性を付与することで、ソフトウェアキーボードは出ないようになります。

今後も同じ問題にぶつかる可能性がある気がしたので、こちらに備忘録として書いておくことにしました。