実装したい要件
<div contenteditable="true" id="editor"></div>な要素内でのペースト処理について、以下のような仕様としたいと思っています。・貼り付け元が同じdiv内の場合 -> そのままhtml形式で貼り付け
・貼り付け元が他のwebサイトなど、異なる場合 -> テキスト形式での貼り付け
理由としては、外部サイトからの貼り付けでスタイルが崩れたりすることが多く、テキスト貼り付けのほうがむしろ便利という声があがっているためです。
その際の「貼り付け元が同じdiv内かどうか?」を判定する方法がわからずに困っています。
試したこと
当初は、以下のようにいけるのでは?とかんがえていました。
javascript
1$('#editor').on('copy', function(event){ 2 // clipboardData(DataTransferオブジェクト)にフラグかなにか持たせようとトライ 3 var clipboardData = window.clipboardData || event.originalEvent.clipboardData; 4 clipboardData.setData('allowOriginalPaste', '1'); // <= ここでセットできなかった 5}); 6 7$('#editor').on('paste', function(event){ 8 // 上記フラグのうむを判別して処理をわけようとトライ 9 var clipboardData = window.clipboardData || event.originalEvent.clipboardData; 10 if(clipboardData.getData('allowOriginalPaste')){ return; } 11 // 以下text形式でのペースト処理 12 ... 13});
ですが、コメントにあるとおり、copyイベントではsetData処理がうまくワークしません。
どなたか知見をお持ちの方がいらっしゃいましたら、ご教示いただけないでしょうか?
参考
外部ライブラリですが、ckEditorなどではこのあたりの処理がワークできているようですが、
訳あってCKEditorが導入できません。(CKEDITOR.DATA_TRANSFER_INTERNALの値で判断している模様)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/06 10:01