2012-05-20 16 views
7

No se encuentra ninguna información relevante sobre el parámetro HTML5 "contenteditable". Me he dado cuenta, de que Google Plus está usando esto para navegadores Chrome:Cómo detectar si el navegador admite el valor "solo texto" en el parámetro contenteditable?

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

Parece que no hay otros navegadores soportan esto y es sólo Chrome valor de propiedad. Quiero usarlo en mi proyecto Sin embargo, necesito detectar el navegador y averiguar si admite la configuración de "texto simple".

Por supuesto, solo pude detectar Chrome, pero podría haber otros navegadores que lo admitan (no sé de ninguno en este momento) u otros navegadores principales podrían comenzar a admitir esta característica en el futuro.

Por lo tanto, prefiero detectar si se admite la funcionalidad de "solo texto simple" que detectar sólo el navegador Chrome.

¿Alguien puede ayudarme en esto?

Respuesta

10

Parece ser una característica webkit-only. El spec sólo permite "verdadero", "falso" y "heredar" como posibles valores para el atributo

Un bug se ha presentado para añadir soporte para texto plano con la especificación de edición, pero es curioso que la petición es para "texto plano "en lugar de" texto simple ".

Editar: Este código se puede utilizar para detectar el soporte. Demo:

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

alert(supportsPlainText()); 

Pero recuerda que haciendo páginas específicas del navegador que es lo que nos liderado al problema IE6.

+0

Gracias por la respuesta informativa. ¿Podría proporcionar también algún código JS, si es posible, cómo detectar si el navegador admite valores de "texto simple" o posiblemente "texto llano" en contenteditable? Qué desastre con HTML5 de nuevo :-( – Frodik

+1

El desastre es Webkit mediante la implementación de cosas fuera de los estándares como lo solía hacer IE. En este caso, parece que es posible hacer detección de características como el resto de los navegadores cuando se arroja un valor no válido utilizado, y también el valor se normaliza en minúsculas: http://jsfiddle.net/e9t2d/1/ Pero recuerda: como esto es algo fuera de cualquier especificación, puede cambiar en cualquier momento y no lo notarás hasta es demasiado tarde. – AlfonsoML

+0

Por favor, actualice su respuesta con el código del violín para que pueda aceptarlo, gracias. – Frodik

9

Aquí es una alternativa si usted prefiere no dependen de la captura de excepciones para detectar características:

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

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

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

Esto funciona porque establece el valor en el atributo en lugar de la propiedad no va a lanzar una excepción SyntaxError si 'plaintext-only' es una valor no válido, en su lugar, establecerá el valor de la propiedad en el valor predeterminado, 'inherit'.

Cómo recuperar la propiedad después de ajustar los resultados de atributo en una cadena entubado inferior, por lo que establecer el valor del atributo a 'PLAINTEXT-ONLY' dará lugar a una propiedad con el valor 'plaintext-only' (apoyado/true) o 'inherit' (no soportado/falso).

+1

nice answer, más o menos lo que hago, excepto que lo hago una sola línea. Solo quería encontrar una respuesta para darles apoyo. Hice un [plugin] (http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active/16043687#16043687) inspirado en su respuesta en [window focus] (http: // stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active /) y han estado buscando encontrar la manera de darles accesorios desde entonces y mantenerlos Olvidando, hasta ahora. lol. Me encantan tus respuestas, uno de mis favoritos para seguir, sigue el buen trabajo! – SpYk3HH

+0

@ SpYk3HH: ¡muchas gracias! :-) –

Cuestiones relacionadas