iOSでクリップボードへのコピーができない
こちらの記事(クリップボードにコピー)でクリップボードの方法を記載しましたが、一つ問題があって、iOSの場合ではクリップボードへのコピーができません。ボタンを押すとキーボードが表示されるだけで何もおきませんでした。
原因はどうやらiOSではブラウザからのクリップボード操作を許可していない?ためのようで、iOSではユーザーが手動で範囲を選択して文字列をコピーしてもらうしかないようです。
なお、今回コピー対象の文字列がやたら長いものがあったので「全選択」ができないと非常につらいのですが、通常のdivタグではそれもできませんでした。
文字列を全選択させるためにはtextareaタグにコピー対象の文字列を出力しないとダメなようです。また、このtextareaをreadonly属性にしてしまうとやはり全選択できません。面倒くさい仕様です。セキュリティ関係の対策でしょうか。
以下、textareaの全選択方法です。
コード
var text = document.getElementById('textarea-example');
text.selectionStart = 0;
text.selectionEnd = text.value.length;
上記はiOSのみ対応。iOS以外はjQueryで以下のように記述。
$('#textarea-example').select();