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

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

ただいまの
回答率

90.52%

  • Firefox

    207questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

  • Firefox WebExtensions

    9questions

Firefoxの拡張機能でクリップボードにコピーしたい

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 344

webarata3

score 348

Chromeの拡張機能をFirefoxに移植しようとしています。
だいたい動くのですが、クリップボードのコピーがうまく行きません。

コードの抜粋ですが、Chromeでは次のような処理でクリップボードにテキストをコピーできました。

let blogLink = 'dummy';
document.execCommand('copy');

document.addEventListener('copy', e => {
  e.preventDefault();
  e.clipboardData.setData('text/plain', blogLink);
});

調べたところ、Firefoxでもdocument.execCommand('copy');や、e.clipboardData.setDataはあるようなのですが、動作しません。

デバッグしてもエラーが出ません。

Firefoxの拡張機能上で、クリップボードへのテキストのコピーはどのようにしたらいいでしょうか?

 以下追加

browserActionで動かそうとしています。
デバッグしていると、 document.execCommand('copy')の行まではいっていますが、copyイベントが発生していないような感じです。

 更に追加

Windows 10のFirefoxでは動いてました。macOSのFirefoxで動きません。

 5/5追加

確認した環境は次のとおりです。

macOS 10.12.6
Firefox 59.0.2

document.execCommand('copy');
を実行するとtrueが返ってきます。

また、
https://codepen.io/netsi1964/full/QbLLGW

のようなアドオンでないものはコピーできます。

他のアドオンでもcopyできませんでした。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • x_x

    2018/05/07 11:36

    clipboardWrite権限は設定してあるのでしょうか?

    キャンセル

  • webarata3

    2018/05/07 19:21

    権限は設定しています。

    キャンセル

回答 2

+1

すみません回答ではないです。

https://developer.mozilla.org/ja/docs/Web/API/Document/execCommand

を見てみると

copy
現在の選択範囲をクリップボードにコピーします。この動作が有効になる条件は、ブラウザによって様々であり、時の経過により発展する可能性があります。このコマンドが使用可能かどうかは、ブラウザ実装状況のセクションで確認してください。

および

[1] Firefox 41 より前のバージョンでは、クリップボード機能を user.js 設定ファイルで有効にする必要があります。詳しい情報は、A brief guide to Mozilla preferences を参照してください。コマンドがサポートされていないか有効な場合、execCommand は false を返す代わりに例外を発生させます。Firefox 41 以降では、ウィンドウ (semi-trusted script) をポップアップできるどのイベントハンドラでも、クリップボードがデフォルトで有効です。

および

CodePen に 使用例 があります。

といった記載がありますね。

例えば上記の情報との矛盾点はあるのでしょうか?少なくとも、

  • FireFoxのどのバージョンで確認したのか
  • 上の「使用例」のページにはどう表示されてるか
  • execCommandの結果はtrue/false/exceptionのいずれだったか

こうした点を確認し、質問にも明記する必要があると思います。無用な混乱を避ける意味で。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/05 16:46

    追記しました。

    キャンセル

+1

Windows 10のFirefoxでは動いてました。macOSのFirefoxで動きません。
この点少し気になりますが、
clipboard.jsを使ってクリップボード機能を実装しても同じような問題は発生しますかー?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/05 16:28

    clipboard.jsのクリップボード機能は動きました。

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Firefox

    207questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

  • Firefox WebExtensions

    9questions