Digamos que tengo un código HTML como este:

<body contentEditable="true">
   <h1>Some heading text here</h1>
   <p>Some text here</p>
</body>

Ahora el símbolo de intercalación (el cursor) parpadea en el interior del elemento H1, digamos que en la palabra «título». ¿Cómo puedo obtener el nombre del elemento del cursor con JavaScript? Aquí me gustaría conseguir «h1».

Este necesita para funcionar sólo en WebKit (es incrustado en una aplicación). De preferencia, debe también funciona para las selecciones.

InformationsquelleAutor Lucas | 2009-07-29

1 Comentario

  1. 44

    En primer lugar, pensar en por qué usted está haciendo esto. Si usted está tratando de detener a los usuarios de la edición de ciertos elementos, que acaba de establecer contenteditable a false en esos elementos.

    Sin embargo, es posible hacer lo que pides. El siguiente código funciona en Safari 4 y devolverá el nodo de la selección está anclado en (es decir, donde el usuario comenzó a seleccionar, seleccionando la opción «atrás» devolverá al final en lugar de la de inicio) – si desea que el tipo de elemento como una cadena, acaba de obtener la nodeName propiedad del nodo devuelto. Esto funciona de longitud cero selecciones como bien (es decir, sólo una posición del cursor).

    function getSelectionStart() {
       var node = document.getSelection().anchorNode;
       return (node.nodeType == 3 ? node.parentNode : node);
    }
    • No estoy tratando de bloquear al usuario de alguna manera, en realidad, sólo se necesita el nombre del nodo, así que puedo actualizar una parte de la interfaz de usuario. Gracias por proporcionar la respuesta, esto funciona muy bien.
    • node.nodeType == 3 sería una mejor verificación de un nodo de texto.
    • El uso de este en un JavaFX HTMLEditor esto funciona muy bien devolver el elemento donde se encuentra el cursor de texto / cursor se coloca en un contentEditable sección, gracias! Como una nota del lado, en el documento.activeElement está reconocido, pero siempre devuelve el elemento del cuerpo que no es muy útil.
    • Este parece que no funcionan en Firefox? : /

Dejar respuesta

Please enter your comment!
Please enter your name here