Как определить, поддерживает ли браузер значение" только для открытого текста " в параметре contenteditable?

Я не могу найти никакой соответствующей информации о параметре "contenteditable" HTML5. Я узнал, что Google Plus использует это для браузеров Chrome:

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

Кажется, что никакие другие браузеры не поддерживают это, и это только проприетарное значение Chrome. Я хочу использовать его в своем проекте. Тем не менее, мне нужно обнаружить браузер и узнать, поддерживает ли параметр "только открытый текст".

конечно, я мог обнаружить только Chrome, но могут быть и другие браузеры, которые его поддерживают (Я не знаю ни о каком в данный момент) или другие браузеры основного потока могут начать поддерживать эту функцию в будущем.

поэтому я бы предпочел определить, поддерживается ли функция "только открытый текст", чем обнаружение только браузера Chrome.

кто-нибудь может мне помочь в этом ?

2 ответов


вроде бы webkit-только характеристика. The spec разрешает только" true"," false "и" inherit " как возможные значения атрибута

на ошибка было подано, чтобы добавить поддержку открытого текста в спецификацию редактирования, но забавно, что запрос предназначен для "открытого текста" вместо "только для открытого текста".

изменить: Этот код можно использовать для обнаружения поддержки. демо:

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

alert(supportsPlainText());

но помните, что делаете браузерные страницы это то, что привело нас к проблеме IE6.


вот альтернатива, если вы предпочитаете не полагаться на отлов исключения выявлять особенности:

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' (поддерживаемые/true) или 'inherit' (не поддерживается/false).