iOS 10 SafariではcreateRangeとexecCommandでtextareaはコピー不可

iOS 10 SafariでのJavaScriptによるコピー

iOS 10 SafariでJavaScriptによるコピーができると聞いて使用してみたのだが、textareaタグやinputタグを使用した場合はコピーできないようだ。

テキストのコピーはtextareaタグやinputタグのテキストをコピーしたいケースが多いため、この仕様は使い勝手が悪すぎる。

ちなみにコピーする際のJavaScriptのコードは下記の通り。

const ua = document.getElementById('ua');
const c = document.getElementById('c');
ua.textContent = navigator.userAgent;
c.addEventListener('click', () => {
  const range = document.createRange();
  range.selectNode(ua);
  window.getSelection().addRange(range);
  document.execCommand('copy');
});

JavaScriptでdivのテキストをコピーするサンプル

JavaScriptでtextareaのテキストをコピーするサンプル