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);
}