11

我找不到有关“contenteditable”HTML5 参数的任何相关信息。我发现 Google Plus 正在将它用于 Chrome 浏览器:

<div contenteditable="plaintext-only"></div>

似乎没有其他浏览器支持这一点,它只是 Chrome 的专有价值。我想在我的项目中使用它。但是,我需要检测浏览器并确定是否支持“纯文本”设置。

当然,我只能检测到 Chrome,但可能有其他浏览器支持它(我目前不知道)或者其他主流浏览器将来可能会开始支持此功能。

因此,我宁愿检测是否支持“纯文本”功能,而不是仅检测 Chrome 浏览器。

任何人都可以帮助我吗?

4

2 回答 2

12

如果您不想依赖捕获异常来检测功能,这里有一个替代方案:

function supportsPlaintextEditables () {
    var div = document.createElement('div');
    div.setAttribute('contenteditable', 'PLAINTEXT-ONLY');

    return div.contentEditable === 'plaintext-only';
}

console.log(supportsPlaintextEditables);
//-> true/false

这是有效的,因为如果将值设置为属性而不是属性,则不会引发 SyntaxError 异常'plaintext-only',而是将属性值设置为默认值'inherit'

在设置属性后获取属性会导致小写字符串,因此将属性值设置为'PLAINTEXT-ONLY'将导致属性值为'plaintext-only'(supported/true) 或'inherit'(not supported/false)。

于 2013-08-19T14:58:26.190 回答
11

它似乎是一个webkit-only功能。规范只允许“真”、“假”和“继承”作为属性的可能值

已经提交了一个错误以向编辑规范添加对纯文本的支持,但有趣的是请求是“纯文本”而不​​是“纯文本”。

编辑:此代码可用于检测支持。演示

function supportsPlainText()
{
    var d = document.createElement("div");
    try {
        d.contentEditable="PLAINtext-onLY";
    } catch(e) {
        return false;
    }
    return d.contentEditable=="plaintext-only";
}

alert(supportsPlainText());

但是请记住,做浏览器特定的页面是导致我们遇到 IE6 问题的原因。

于 2012-05-20T09:44:24.220 回答