Estoy construyendo una aplicación web con JavaScript puro. Me gustaría que el usuario pueda seleccionar un párrafo completo cuando lo toque una vez en Chrome Android, y que aparezca el menú contextual de Android "Copiar" para que pueda copiar fácilmente el texto que acaba de seleccionar.
Ya tengo todo el párrafo seleccionado con un solo toque, no hay problema, usando la API de selección . Pero, el menú "Copiar" no aparece cuando se selecciona el texto. ¿Por qué no y cómo puedo hacer que aparezca en Chrome en Android?
Hice un JSFiddle aislando mi problema que puedes abrir en Chrome Android para verificar. Aquí está el código de la misma.
HTML:
<p>Lorem ipsum</p> <p>Dolorum est</p>JavaScript:
let selectedNode = undefined; document.querySelectorAll("p").forEach(function (element) { element.addEventListener("click", function () { const selection = window.getSelection(); selection.removeAllRanges(); if (element === selectedNode) { selectedNode = undefined; } else { const range = document.createRange(); range.selectNodeContents(element); selection.addRange(range); selectedNode = element; } }) });Cuando toco cualquiera de los párrafos, se selecciona el texto del párrafo, pero no aparece el cuadro de diálogo Copiar:
Cuando vuelvo a tocar el párrafo para DESACTIVARLO (que esencialmente llama a window.getSelection().removeAllRanges() , vea el JavaScript anterior), ENTONCES aparece el cuadro de diálogo Copiar:
Tengo curiosidad por qué sucede esto, pero en última instancia me gustaría saber:
¿Cómo puedo hacer que aparezca el cuadro de diálogo Copiar cuando se selecciona el texto, en lugar de cuando se anula la selección?