clipboardData
Android の Chrome では、コンテンツの編集可能な要素へのプレーン テキストのコピーがサポートされていないことを読みました (この投稿のように)。上記の例をモバイルで実行すると、貼り付けられたテキストからすべての書式設定を削除することを目的としており、text
変数は空の文字列を返します。これは、Android の Chrome でのみ発生します。そこで、対処法があれば教えていただきたいです。
JavaScriptから変更されたサンプル コードは、貼り付けイベントでクリップボード データを取得します (クロス ブラウザー)
$('#editableDiv').on('paste',function(e) {
e.preventDefault();
var text;
if( e.originalEvent.clipboardData ){
text = (e.originalEvent || e).clipboardData.getData('text/plain');
if(text === ''){
console.log('Android Problem');
}
document.execCommand('insertText', false, text);
}
else if( window.clipboardData ){
text = window.clipboardData.getData('Text');
if (window.getSelection)
window.getSelection().getRangeAt(0).insertNode( document.createTextNode(text) );
}
console.log(text);
});
更新: ユーザーがテキストを貼り付けるためのポップアップをトリガーすることで、回避策を考え出しました。理想的ではありませんが、フォーマットを削除して仕事を終わらせることができました。より多くの回避策/提案を探しています。
if( e.originalEvent.clipboardData ){
text = (e.originalEvent || e).clipboardData.getData('text/plain');
if(text === ''){
text = prompt('Paste something..');
}
document.execCommand('insertText', false, text);
}