【发布时间】:2014-08-15 23:29:11
【问题描述】:
我正在尝试创建一个 HTML5 内容可编辑的 div,它只接受纯文本。我在下面使用 html 和 jQuery:
HTML
<div contenteditable="true"></div>
jQuery
(function () {
$('[contenteditable]').on('paste', function (e) {
e.preventDefault();
var text = null;
text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste Your Text Here');
document.execCommand("insertText", false, text);
});
});
但它不适用于所有浏览器。 getData 在 Internet Explorer 浏览器中不支持。我尝试了很多关于 stackoverflow 的解决方案,但没有一个对我有用。
我也试过
(function () {
$('[contenteditable]').on('paste', function (e) {
e.preventDefault();
var text = null;
if (window.clipboardData && clipboardData.setData) {
text = window.clipboardData.getData('text');
} else {
text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste Your Text Here');
}
document.execCommand("insertText", false, text);
});
});
但在这种情况下,document.execCommand("insertText", false, text); 不适用于 IE。
有没有什么办法可以在过滤HTML标签后接受数据,这样任何人都可以通过类型、粘贴、删除或任何其他方式在可编辑的div中输入数据。它应该显示为文本。
【问题讨论】:
-
看看使用这个概念:
$('<p>Hi, I\'m <abbr title="Hypertext Markup Language">HTML</abbr></p>').text();。那应该给你Hi, I'm HTML。 -
我的评论涵盖了“将其转换为纯文本”部分。对于您正在尝试做的事情,我没有任何使用 JavaScript API 的经验,但是当我阅读这个问题时,我无法理解您遇到的问题。例如,“now working for IE”应该读作“not working for IE?”
-
加
contendeditable='plaintext-only' -
不幸的是,
contenteditable='plaintext-only'似乎是 webkit 独有的功能。 -
plaintext-only可能有一天会被标准化:github.com/w3c/editing/issues/162
标签: javascript jquery html