質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1292閲覧

テキストをクリップボードにコピーするボタンの実装

_T_S

総合スコア27

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/10/16 09:29

ハッシュタグをコピーするボタンを作成しているのですが、どうもスマホの時にうまくコピーされません。
PCの場合はしっかりとクリップボードにコピーされます。

onclick属性を使って、htmlに直接書き込む方法もある様ですが、それでもスマホの時にはコピーできませんでした。

参考サイト
こちらのサイトはスマホでもコピーできました
https://www.marorika.com/entry/copy-to-clipboard

このサイトのやり方を真似ているのですが、スマホだとうまく行きません。
https://designsupply-web.com/media/knowledgeside/4035/

いろいろな参考サイトを見ましたが、スマホでコピーできるのとできないのとまちまちでした。

html

1<input type="text" value="#髪はじめました" id="instagram__tag" class="startedApply__stepList__input" readonly> 2<button class="button startedApply__stepList__linkButton" id="btn_copy">ハッシュタグをコピーする</button>

JavaScript

1function copyTags() { 2 // コピー対象の要素を取得 3 var target = document.getElementById('instagram__tag'); 4 if (navigator.userAgent.match(/ipad|ipod|iphone/i)) { 5 target.readOnly = false; 6 const range = document.createRange(); 7 range.selectNode(target); 8 window.getSelection().addRange(range); 9 document.execCommand('copy'); 10 target.readOnly = true; 11 } else { 12 target.select(); 13 document.execCommand('copy'); 14 } 15 alert("text copied!!"); 16 } 17 18 const trg = document.getElementById('btn_copy'); 19 trg.addEventListener('click',copyTags);

原因分かりますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/16 09:46

>どうもスマホの時に 機種は何でしょうか。 分岐を見るとiOS系とそれ以外になっているようですが
_T_S

2020/10/16 09:55

iphone11でiosのバージョンは最新です。
m.ts10806

2020/10/16 10:05

質問本文に追記してください。 ※ただ当方Androidしかないので実機確認できなさそうですが
m.ts10806

2020/10/16 10:06

ブラウザはSafariですよね。
m.ts10806

2020/10/16 10:11 編集

Androidは問題なさそうですね(Chrome、Firefox) 条件分岐なくして、両方とも↓でいった場合はどうですか? target.select(); document.execCommand('copy');
_T_S

2020/10/16 10:19

ありがとうございます。 試してみます。
guest

回答1

0

ベストアンサー

回答のつもりだったんですが、回答ではなくなりました^^;

数年前に Safari で使用できるライブラリを教えてもらったことがあります。

モバイル端末でのクリップボードへのコピー - teratail

で、紹介いただいたライブラリは数年間使用に耐えたので、clipboard.js の実装を調べてみては?
と回答しようと思ったのですが、どうやら今現在は問題があるようです。

clipboardJS relies on execCommand which is now obsolete and could be removed. Any plans for alternatives? #683

Document.execCommand()

Obsolete

This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

ちゃんと調べてないですけど、この辺の話なのでは?

対応しなければならない端末によっては、結構実装が複雑になるはずなので、後継ライブラリを探してみると良いかも。

投稿2020/10/18 10:28

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問