在Chrome上onPaste e.c preventdefault失败
onPaste e.preventDefault Fail on Chrome
我在summernote中有一个contentitable问题。
Codepen: http://codepen.io/anon/pen/LkLYvV
当前行为: Safari/Firefox -当粘贴图像时,它只是显示不允许粘贴,但在Chrome上,它显示不允许粘贴与图像粘贴在一起。
期望行为:完全禁止粘贴图像。
这似乎是指向在Chrome上粘贴事件的问题。
我想防止粘贴图像,所以我添加了e.p preventdefault,但chrome仍然粘贴图像。下面是我的代码和一些用于调试行为的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);
}
}
});
Update: Throw new error to preventDefault.
目前这是我暂时做的。如果有人能提出比抛出错误更好的方法来停止默认操作就好了。
似乎这个安全设置/chrome浏览器,我必须添加一些东西来获得bufferText
var bufferText = ((ne.originalEvent || ne).clipboardData || window.clipboardData).getData('text/plain') || null;
if (bufferText == null) {
throw new Error("Cannot Paste Image");
}
通过抛出新的错误,我能够停止发布图像,但我可以允许所有其他形式的文本
在你回调onPaste
结束时,放一个return false;
它应该工作。这就是我使用e.preventDefault()
相关文章:
- 我怎样才能制作一个“;reverse preventDefault”;在jQuery中
- IE7 preventDefault()无法处理跳过链接
- e.preventDefault在表单提交时被忽略
- preventDefault而不删除html5验证
- event.preventDefault阻止ajax调用
- jQuery preventdefault提交表单没有'通过js函数提交表单时无法工作
- 事件发生后重定向到主页.preventDefault.
- 是preventDefault()一个jQuery函数或javascript函数
- preventDefault之后的重新启动事件
- preventDefault()赢得'It’我不管用
- 为什么使用e.preventDefault的if语句?-拖放javascript
- event.preventDefault() 不会在 jQuery Mobile 中取消链接方向
- preventDefault() 类似于 javascript 中的功能
- e.preventDefault() in ie8
- 如果父元素具有 preventDefault,如何将单击传播到子元素
- Javascript - jQuery preventDefault method
- Javascript-匿名函数中使用参数引用全局函数的闭包-我如何使用preventDefault
- 如何查找导致preventDefault的原因,该preventDefault会覆盖正常的单击行为
- 如果存在event.preventDefault函数,则ajaxForm不起作用
- Javascript preventDefault operation