Safariでtextareaを選択状態にできない

 ツール作成中。利用者の便宜を考えてtexareaをクリックしたらtextarea内の全体を選択状態にしたい場合。
 textareaとかinputをクリックして「Ctrl+A」とか「Cmmand+A」とかすれば全体を選択状態にすることができる。でも、全選択するのが面倒。クリックしたら選択状態になったほうが楽。ということで、以下のようにする。

 <textarea onfocus=”this.select()”/>

 しかし、Safariではうまくいかない。
 これはiPhone対応をやったときにもはまったポイントだった。
 のちに調べてみるとiPhoneでは長押しで「すべてをコピーする」みたいなやつがあったので実際には不要だったのだけど。ということで、PC、Macなどで対応できればいいや、ということで調べる。
 前に調べた対処方法では、setTimeoutで10msとかタイミングをずらしてselectの処理をする、というものだった。どこだか失念したので、今回はあらためてメモ。
 ここにあった。
トラックバックURLをコピーしやすく – 万年床生活者の備忘録

解決策として、以下のように変更すればWindows・Macを問わずほぼ全てのブラウザでトラックバックURLの一発選択が可能になるとの事です。

 ということで、こういうやつ。

 <textarea onclick=”this.focus(); this.select()” />

 たしかにうまくいく。しかもシンプル! 例によってWindows版のSafariだけでテスト。Mac版はわかんないんだけど、上記エントリーの人が試してOKだったらしいのでこれでいくことに。ありがとうございます。

コメント