私たちはユーザーが2つのシステム間でデータをコピー・ペーストできるようにしています。ウェブページから電子アプリまで。ブラウザ間のカスタムclipboardDataデータタイプ
ユーザーは、copy-to-clipboardのヘルプを使用してコピーイベントをトリガーするボタンをクリックします。我々はpasteイベントに耳を傾ける電子アプリで
import copy from "copy-to-clipboard";
const copyHandler = (evt) => {
evt.preventDefault();
evt.clipboardData.setData("text/plain", url);
evt.clipboardData.setData("mumbo/jumbo", JSON.stringify({
foo: "bar"
}));
}
document.addEventListener("copy", copyHandler);
copy();
document.removeEventListener("copy", copyHandler);
:
onPaste = (evt) => {
if(evt.clipboardData.getData("mumbo/jumbo")) {
// Handle custom data-type
} else if(evt.clipboardData.getData("text/html")) {
// Handle html
} else {
// Handle plain text
}
}
クロームすべての作品には、ユーザーが当社のウェブページを使用しています
。カスタムデータ型のデータを読み取ることができます。しかし、ユーザがFirefoxのWebページにアクセスすると、evt.clipboardData.getData("mumbo/jumbo")
は未定義を返します。
text/plain
と
text/html
に設定したデータは引き続き使用できます。
データをFirefoxに戻すとevt.clipboardData.getData("mumbo/jumbo")
は正しく設定されたデータを返します。
これは動作するはずですが、何も見つかりませんでしたかについての情報を見つけようとしました。カスタムのclipboardDataデータ型はブラウザ間でサポートされていますか?何か間違っていますか?それとも、それは決してうまくいかなかったのですか?
application/json
と同じことをすると、FirefoxとElectronの間でデータ型も機能しません。私たちが作業できるデータタイプは、text/plain
とtext/html
ですが、すでに他の目的で使用されています。
Firefoxはコピーとペーストのやりとりの非常に基本的な実装をしているようですが、クロスブラウザ/プラットフォームを識別する必要がある場合は、xml識別子をペーストに含めることをお勧めします。 – Deckerz