2017.1.29
2020.1.7

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();

参考リンク

JavaScript】関連記事