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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Firefox WebExtensions

Firefox WebExtensionsは、Firefox向けアドオンをクロスブラウザで開発するためのAPIおよび技術。Google Chrome/Operaでサポートされているextension API との互換性を持ちます。

Firefox

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

Q&A

2回答

963閲覧

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

webarata3

総合スコア367

Firefox WebExtensions

Firefox WebExtensionsは、Firefox向けアドオンをクロスブラウザで開発するためのAPIおよび技術。Google Chrome/Operaでサポートされているextension API との互換性を持ちます。

Firefox

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

0グッド

1クリップ

投稿2018/04/30 00:57

編集2022/01/12 10:55

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

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

javascript

1let blogLink = 'dummy'; 2document.execCommand('copy'); 3 4document.addEventListener('copy', e => { 5 e.preventDefault(); 6 e.clipboardData.setData('text/plain', blogLink); 7});

調べたところ、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できませんでした。

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

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

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

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

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

x_x

2018/05/07 02:36

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

2018/05/07 10:21

権限は設定しています。
guest

回答2

0

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

この点少し気になりますが、ライブラリのclipboard.jsを使ってクリップボード機能を実装しても同じような問題は発生しますかー?

投稿2018/05/03 11:10

編集2018/05/03 11:10
umyu

総合スコア5846

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

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

webarata3

2018/05/05 07:28

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

0

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

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/03 10:54

KSwordOfHaste

総合スコア18392

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

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

webarata3

2018/05/05 07:46

追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問