1. ホーム
  2. javascript

[解決済み] execCommandで「プレーンテキストとして貼り付ける」ためのJavascriptのトリック

2022-08-07 05:13:02

質問

私は execCommand をベースにした基本的なエディタです。の中にテキストを貼り付けるには、3つの方法があります。 execCommand のエリアにテキストを貼り付けるには、3つの方法があります。

  • Ctrl + V
  • 右クリック -> 貼り付け
  • 右クリック -> プレーンテキストとして貼り付け

HTMLマークアップのないプレーンテキストのみを貼り付けられるようにしたいです。最初の2つの操作でPlain Textを貼り付けるように強制するにはどうしたらよいでしょうか。

可能な解決策 私が思いつく方法は、キーアップイベントのリスナーを設定することです。 Ctrl + V というように、HTMLタグを削除してから貼り付けます。

  1. これは最良の解決策ですか?
  2. 貼り付けに HTML マークアップを使用しないことは、防弾対策になりますか?
  3. 右クリック -> 貼り付けにリスナーを追加する方法は?

どのように解決するのですか?

を傍受します。 paste イベントをキャンセルし paste をキャンセルし、手動でクリップボードのテキスト表現を挿入します。

http://jsfiddle.net/HBEzc/ . これが一番信頼できるはずです。

  • これはあらゆる種類の貼り付けを捕捉します ( Ctrl + V コンテキストメニューなど)
  • クリップボードのデータを直接テキストとして取得できるので、HTMLを置き換えるような醜いハックをする必要がありません。

クロスブラウザのサポートはよくわからないけど。

editor.addEventListener("paste", function(e) {
    // cancel paste
    e.preventDefault();

    // get text representation of clipboard
    var text = (e.originalEvent || e).clipboardData.getData('text/plain');

    // insert text manually
    document.execCommand("insertHTML", false, text);
});