summernoteのcontenteditableに問題があります。onPaste e.preventDefault Chromeでのエラー
Codepen:http://codepen.io/anon/pen/LkLYvV
現在の行動:サファリ/ Firefoxの - ペーストのイメージ、それだけで貼り付けが許可されていない示しているが、Chromeで、それが貼り付けは、画像ペーストと一緒に許可していないを示しています。
予想される動作:イメージの貼り付けを完全に無効にします。
これはChromeの貼り付けイベントに関する問題を指摘しているようです。
イメージの貼り付けを防止したいので、私はe.preventDefaultに追加しましたが、まだクロムはイメージを貼り付けています。以下は私のコードと私のconsole.logのいくつかの動作をデバッグするためのものです。クロムの貼り付けを防ぐ他の方法はありますか?
$('#summernote').summernote({
height: 300,
minHeight: 300,
toolbar: [
// [groupName, [list of button]]
['style', ['bold', 'italic', 'underline', 'clear']],
['fontsize', ['fontsize']],
['para', ['ul', 'ol', 'paragraph']],
['insert',['link','picture']]
],
callbacks : {
onPaste: function (e) {
e.preventDefault();
console.log('pasting'); // Chrome shows This
var bufferText = ((e.originalEvent || e).clipboardData || window.clipboardData).getData('Text'); //This actually removes the image because image is not text.
console.log(bufferText); //Chrome Shows Empty
console.log(typeof bufferText); //Chrome Shows String
console.log(bufferText.length); //Chrome Shows 0
if (bufferText.length == 0) {
console.log ('in if loop'); //Chrome Shows this in Console
document.execCommand('insertText', false, 'Paste Not Allowed'); //Chrome wrote "Paste Not Allowed" in contenteditable but the image still get pasted.
return false;
}
if (!bufferText)
return true;
document.execCommand('insertText', false, bufferText);
}
}
});
更新:preventDefaultに新しいエラーを投げます。
現在、私はこれを一時的に行っています。デフォルトのアクションを停止するためにエラーをスローするよりも、誰かがより良い方法を提案できる場合。
このセキュリティ設定/ Chromeブラウザ、私は画像の掲載を停止することができる午前新しいエラーをスローすることによりbufferText
var bufferText = ((ne.originalEvent || ne).clipboardData || window.clipboardData).getData('text/plain') || null;
if (bufferText == null) {
throw new Error("Cannot Paste Image");
}
を得るために何かを追加する必要がありますように見えますが、私はすべてを許可することができます他の形式のテキスト。